At last, it’s completed and this new programmer will make my life so much easier when it comes to PIC development.
This has been one of those projects that in some ways, I wished I’d not started as there seemed no end to it and everything just seemed to go wrong. I blame the fact that I never really had any time to just sit down and do this project from start to finish, but now it’s completed and working, I’m really pleased I stuck with it.
And here it is.
Ok, a bit of explanation as to what this lovely, beautiful piece of equipment can do.
Inside the case are six PCBs packed with electronics. There’s a PCB that contains a PSU with 5v regulator and an adjustable voltage regulator; set to around 7.3v that drives the LEDs in the push switches. Also on this board is a MAX232 and associated electronics that provide two RS232 interfaces; more on these in a second. There are four almost identical boards; one per output channel that contain a 16-bit shift register, driver chips and relays. The final board contains the PIC and driver logic that runs everything.
Also inside are two Microchip PICKIT programmers (a PICKIT2 and a PICKIT3).
On the front panel there are four 9-way D-Type connections that can be used to connect an ICSP cable to a project under development, or, in the case of this new programmer, up to four projects in development; this will make multi-PIC projects a lot simpler to develop and debug.
You can select which PICKIT is connected to which of the four ports and you can of course only connect each programmer to one port at a time. The unit also has in-built support for RS232 which I use for project debugging. My custom ICSP cable has provision for serial data to be set from the PIC to the outside world and this makes it possible to send any debugging information from the PIC, into my programmer which level shifts from TTL to RS232 and then out to a dumb terminal emulator. I’ve made provision for up to two serial ports and again, you can select which serial port is attached to which input. The serial ports are also available via four, 4mm banana sockets on the front panel for use within other projects.
The upshot of this is that you can connect one port to each PIC project under development, and allocate either of the internal programmers / serial ports on the fly to each port as required without the need to keep unplugging cables all the time.
The advantage of this new unit over my now obsolescent one (which only support up to three outputs and was very clunky), is that I could, in theory, expend the design to support as many output ports as required. It would be a lot of additional effort to increase the number of PICKIT programmers that can be supported. This was going to be a six port unit but I didn’t have a case large enough at the time. But now I’ve got all the hardware sorted out, it wouldn’t be too difficult to build a larger one if required. I’d need to tweak the PIC firmware that controls everything of course, but that’s no real hassle.
Oh yes, the reason I've used a PICKIT2 and a PICKIT3 is simple. I prefer the PICKIT2 as it's much faster than the 3, but the 3 supportes a couple of PICs that I've started to use that the 2 dosn't. I could have used any combination of programmers if desired, or even completly different programmers. It's just I rather like the Microchip ones.
Well, I'm making progress on my PIC programmer. This has been one of those projects that has been overly difficult and problematic for no apparent reasons. I had problems with some of the switches with built-in LED’s I’ve been using; a couple of them were faulty and that caused me some head scratching for a while. Then my current PIC programmer would work with my PC at all; for some reason the USB card in the PC had come lose but again, I spent a fair amount of time re-booting the PC and messing around. Needless to say all the other USB devices that are plugged into the other USB ports were working fine. I then had problems getting the PIC (there’s a PIC at the core of my new programmer) to work correctly. For some reason the results were very intermittent and I was getting worried that the design was fundamentally flawed, but it turned out that there’s an “issue” with the AMICUS compiler which I need to report to the manufacturer. This really should have been a weekend type project instead it’s been dragging on for several weeks. However, I managed to get one of it’s channels up and working yesterday and it worked perfectly, so now I just need to etch a couple of additional boards for the remaining programming channels, and then create some interconnect cables and it’s done.
Due to other commitments, and the fact that I spent most of Sunday up to my elbows in ferric chloride sludge, progress on my two current projects, PIC programmer and new clock has been rather slow. However, I’ve managed to etch one of a set of four double-sided PCB’s that I’ll need for the PIC programmer. The board has now been drilled and populated.
Over this week, I’ll hopefully get some time to hook it up and prove that my idea for this new programmer will actually work – what could possibly go wrong :(
For those that are interested, I'll also post details on how to make double-sided PCB's in the home workshop. It's been a bit of a learning curve but it's not rocket science if your careful.
I’ve been having intermittent problems with my PIC programmer recently. It was quite literally thrown together in an afternoon several years ago and whilst it’s served me well, it’s time a new one was constructed. Now, you would be right in thinking what’s the point in building a PIC programmer when they are available for peanuts and well supported, and you would be right. However, nothing in my world is ever simple and I have a couple of additional requirements that a standard off the shelf programmer doesn’t support.
My existing programmer can, at the turn of a switch, be connected to one of three different PICs and this makes developing multi-PIC projects much easier; I don’t have to spend time unplugging and re-plugging cables all the time. My first requirement is to upgrade from a maximum or three, to four PICs.
My existing PIC programmer also allows for serial data to be routed to and from the select PIC to aid debugging via a dumb terminal. Second upgrade is that I want to be able to support two serial ports and select which PIC uses which serial port. This will allow me to, if required, connect the programmer element to one PIC, and the two serial ports to two other PICs.
My final requirement is to support a much wider range of PICs than my current programmer BUT, I don’t want the hassle of having to write and maintain the software so the actual programmer element will be based on two Microchip PIC programmers; a PICKIT2 and a PICKIT3. The reason for using two different programmers is because whilst I prefer the PICKIT2 as it’s MUCH faster than the PICKIT3, there are several PICs that I use that aren’t supported by the PICKIT2. One useful feature of the PICKITs is that you can connect several of them to a single PC.
So, my current clock project got moved to the back-burner and this afternoon I started work on my new programmer.
Once all the buttons are labelled up it will be much clearer, but there are four push buttons per PIC channel. One selects which programmer is connected (PICKIT2 or PICKIT3), and the lower two push buttons select which COM port the serial data is routed to. On the right of the panel are three additional switches. Two of these allow for serial data to be read/written directly to the serial ports via the 4mm sockets, and the third push button is the master reset. Those square buttons have in-built LEDs so it’s possible to see which options are selected. The LEDs on the right are power monitors, and status indicators from the PIC programmers.
Hopefully, I should be able to get this completed during the evenings next week.