|The original MC1 flash procedure involved having to use an actual parallel port. For this reason I have kept an old PC running XP around. Just to flash the firmware from time to time. As it didn't work so good on Windows 7 or pretty much any Mac. Then a few months ago someone was asking about the possibility of using a USB in circuit programmer like this. So seeing as they are dirt cheap on ebay, I bought one to try out.|
Compiling the code into AVR instructions is accomplished with the WinAVR tool chain. I'm using the latest release. However there is one gotcha when installing. Do NOT install it into a folder with brackets in the name, like say:
C:\Program Files (x86)\WinAVR
This causes make.exe to crash. No I'm not kidding.
The next issue is the Avrdude binary that comes with the WinAVR compile is just a little too old to know about the usbasp programmer. So that needs to be updated to something recent. Just unpack that file into the bin folder of the WinAVR install, overwriting the existing avrdude files. Check that the version available on the command line is correct by running it without any arguments.
Next the usbasp needs a driver to work in Windows (7 in my case). You can get that here. I didn't have much luck with the installer, but if you go into the Device Manager, right click on the usbasp device and install drivers from that menu. Then select the folder where you unpacked the drivers. On my machine the device driver takes 10 seconds to connect so give it time before trying to flash the firmware.
Finally the actual command you use to flash the firmware is:
avrdude -c usbasp -p m128 -U flash:w:main.hex
Where 'main.hex' is the compiled binary. It's faster and easier than the old PonyProg2000 method, and scriptable. Just put it in the makefile. Less mucking around.
Now I'll have to find another excuse to have an old PC lying around. Maybe LAN games with the lad? :D