Electronics > Microcontrollers

ZEPPP: Arduino-based PIC programmer for several old-school microcontrollers.

(1/8) > >>

battlecoder:
This is a project I finished around September and it wasn't until now that it occurred to me that it was perhaps a good idea to share it here.  :palm:

ZEPPP (Zero External Parts PIC programmer) is basically a PIC programmer that requires only two things: A standard Arduino Nano/Uno/Pro-mini and your computer (and the PIC of course!)
It connects directly to your target microcontroller (or any dev board with a LVP-capable ICSP connector).
The command line tool works on Linux, Windows and OSX.

It currently supports the following PICs:

* 16F87, 16F88
* 16F627A, 16F628A, 16F648A
* 16F873A, 16F874A, 16F876A, 16F877A.
While I guess it makes little sense to most developers or engineers to use such "outdated" devices, I think they are still great for learning, and for simple projects.

This is perfect for people who want to try their hand at PIC programming but don't want to (or can't) invest in proper programming hardware. In fact, I started this project for a workshop I was organizing; I had made PIC demo boards for everyone, but it was too unpractical to get PIC programmers for all the attendants, or to expect them to bring their own. Now, most of them already had Arduino boards, and I had several of my own that I could take with me for those who didn't have one.

I made a quick post about this programmer on my blog, but you'd probably be more interested in its GIT repository, where all the latest files are.


If any of you give this project a try let me now! Feedback is always a good thing to have (said no audio engineer ever).

jaromir:
Thanks for sharing.

I made similar programmer for newer 8-bit devices - https://github.com/jaromir-sukuba/a-p-prog - and really didn't bother to support the older ones (with PGM pin), so your work is great addition to simple PIC programmers.

battlecoder:
Awesome project, jaromir! Indeed quite similar to what I did. I'm glad to see something aimed towards more modern microcontrollers, especially with such a wide range of supported devices!

For ZEPPP supporting more than one family was a real pain in the rear ...panel. A lot of timing and protocol differences. The programming specs for older devices are all over the place. Hopefully the latest iterations of Microchip's programming specs are more streamlined after their years of experience. I can't imagine the pain of supporting that many devices if the spec are as wildly changing as they used o be.

rrinker:
 Interesting - if I didn't already have a PICKit 2. I have a box full of 16F873/877 (whichever the complementary ones are, where the one has more memory but is otherwise identical). An old circuit I was going to use used the smaller chip, I figured the extra memory wouldn't for the most part break code written for the one with less memory, and so managed to get several dozen as samples. I've since changed my approach and instead of building someone else's interface design using the PIC chips I am designing my own with Atmel micros. I should do something with all those PICs though. Port my code and make some of my board with the PIC, but I'd rather not have a mix of devices, even though it is all for personal use. I suppose if they would be indistinguishable at the sharp end, it wouldn't matter. At any rate, I hate to see a box full of potentially useful chips just go to waste, at some point I'll come up with some project to use them in.

 These may be older chips, but there are still plenty of applications that don't need the speed and/or memory of ARm cores and the like. Using faster micros where the project involves mostly waiting for user input just means the thing executes more keyboard scans than a slower one - the old slow ones are more than capable of performing the task.

 Neat thing about this - I could just set it up as a shield with a ZIF socket and use the same Arduino with my ATTiny shield, or a PIC shield, depending on what I wanted to program. Effectively one platform for multiple purposes. In fact, if it's possible to change around some of the pins being used - it could be BOTH, depending on the code loaded to the Arduino.

battlecoder:

--- Quote from: rrinker on January 02, 2019, 07:51:30 pm ---At any rate, I hate to see a box full of potentially useful chips just go to waste, at some point I'll come up with some project to use them in.
--- End quote ---
Same, but eventually -even if it's 7 years later- I always find a use for the stuff I have (it has happened), and everything is fine again (except for all the stuff I bought during those 7 years, that will sit there unused, bothering me for probably an equally long time).


--- Quote from: rrinker on January 02, 2019, 07:51:30 pm ---Neat thing about this - I could just set it up as a shield with a ZIF socket and use the same Arduino with my ATTiny shield, or a PIC shield, depending on what I wanted to program. Effectively one platform for multiple purposes. In fact, if it's possible to change around some of the pins being used - it could be BOTH, depending on the code loaded to the Arduino.

--- End quote ---
That's a really great idea. Pins can be changed to whatever you like. All communication happens using regular digital pins. It would be even better if the same firmware can talk to both PIC and Arduino devices, depending on handshake and/or serial instructions being issued by the host. That could be the beginning of an extremely simple multi-microcontroller programmer.

Navigation

[0] Message Index

[#] Next page

There was an error while thanking
Thanking...
Go to full version