Sunday, 29 January 2012

DAPA bootload the ATmega644P - Ah...No.

Having built myself a breadboard Sanguino in order to apply a bootloader to the ATmega644p, I decided the quickest way forward would be to build a parallel programmer or DAPA, I mean how hard can it be? a male DB25 and a couple of resistors right?

The inspiration for this came from a couple of places: Arduino website and the Reprap wiki.

Well I already have all of the required parts, one of many headshells I just happen to have lying about (I hoard and almost never throw anything potentially useful away - drives my wife nuts :o)

I like these head shells as you can wire them up however you like and then just connect them together with standard network cables, allowed me to carry all modem/terminal male/female DB25/DB9 combinations with just half a dozen head shells and a network cable (very useful for serial communication between unix boxes or for console access, just build the cable you require from 2 head shells and a network cable).

Here are the parts required for this little project:
Solder the resistors into the middle of 3 of the wires and cover with heat shrink to avoid shorts once it is all assembled.
Push the pins into the required
This one actually actually takes RJ11 connectors, and only has 6 pins so I replaced the outer shell with one for an RJ45 connector no point wasting pins unnecessarily (they are pretty modular) as I don't actually have any RJ11 connectors to hand, but do have some network cable with an RJ45 attached (some previous project) I do have a crimp tool for this if I actually needed to make it from scratch.
Connect it up to the breadboard, ignore the setup on the left, that is a PIC18F4550 also awaiting programming it will become a HID keyboard for my Mame cabinet.
I also make use of sections of the network cable as jumper wires for the breadboard - saves buying specialised cables, and I can have as many as I like and cut them to whatever length I like pretty much for free as I just happen to have loads of this cable (did I mention I hoard?).

Well the power source became a bit of an issue - I bought a Skytronic 0-40V bench top power supply a few years back on Ebay, however beyond turning it on I never actually tested it, turns out it has a fault somewhere - it turns on and displays 0.5V, but you cannot increase or decrease the voltage.

I took it apart and found a loose wire that was not pushed into its header correctly, however even after pushing it back in, it still won't put out anything other than 0.5V (something to troubleshoot further another day).

So on to a different power source option, I have a couple of transformers that powered our last set of DECT phones (recently replaced as they had pretty much stopped working), they have 4 wires in the cable and supply 7V in both AC and DC, so 7V DC it is as the input, just need to reduce this slightly to 5V and we are good to go.

Add a quick voltage regulator circuit (see the datasheet for the LM7805) and we now have a good 5V supply (about 20p worth of parts and all re-useable as none were soldered).

Install the Arduino software on my laptop, add the Sanguino host software, download and install the giveio.sys lpt driver, select Sanguino with ATmega644P as the board type and Parallel Programmer as the Programmer and hit Burn Bootloader.

Oh dear - can't open the lpt port - giveio won't start, even if I try manually as administrator I get error 1275 driver has been prevented from loading. After much searching and trying various work arounds, all to no avail, it seems that Windows 7 (and Vista) 64 bit operating systems will not allow unsigned drivers to load.

So much for that approach, my choices now are install an old O/S, just so I can bootload this microcontroller, or bite the bullet and actually spend some cash on something current that can do the job.

Well no harm done, all it cost me was some time and a few pennies worth of parts. I have now decided to use an USBasp programmer and whilst I could probably make one, I doubt I could even buy the parts for anywhere near the cost of the one I ordered from Ebay at £2.69 and free postage from Hong Kong, hopefully it will arrive in a few days and we can try again to stick a bootloader on the microcontroller.