Programming the Pingable Envelope Generator
How to re-program your P.E.G.
In a nutshell:
- Set up the hardware and software: Updating Firmware on AVR chips
- Download the current release of PEG code
- Connect ISP to red channel and flash code from your computer (see photo below)
- Remove blue channel jumper
- Connect ISP to blue channel and flash code from your computer (see photo below)
- Re-install blue channel jumper
- Cycle power
- Play time!
(see bottom of post for detailed instructions)
First, if don’t already have your computer set up for programming AVR chips, then read the article on programming firmware. You’ll need software installed on your computer (AVR Fuses or CrossPack for OSX, or AVRStudio).
Now, remove your PEG from your rack and power it up. You may need a longer ribbon cable, or somehow rig something up so you can keep it powered on while programming.
Next, connect the AVR ISP programmer to the 6-pin header under the red channel chip. Note the red stripe orientation. On your computer, flash the code to the PEG. See photo below.
Next, connect the 6-pin ISP cable to the blue channel header that’s to the right of the blue channel chip. You’ll have to remove the blue jumper from this header, and replace it when you’re done. Flash the code onto the blue channel.
Finally, disconnect the AVR ISP and turn off the PEG, and then turn it back on. This final step is necessary because the jumper on the blue channel is only read at boot-time, so the PEG must be turned off and back on with this jumper installed.
To clear up any confusion, notice that there’s a second blue jumper on the PEG that’s located near the power cable. Just leave this alone during programming. The blue jumper that’s mentioned above is located next to the blue channel AVR chip (towards the top, center of the board).
Technical Note on fuses:
Normally, you won’t have to do anything to the fuses. But if your chips got a static shock, or if you are using brand-new chips from mouser or an electronics supplier (as opposed to chips that you bought from 4ms) then you will need to program the fuses.
With avrdude (which is installed if you have AVRFuses running in OSX) the command is this:
avrdude -F -B 16 -P usb -c avrispmkII -p atmega328p -U hfuse:w:0xd9:m -U lfuse:w:0xce:m
Note that it contains -B 16, which forces avrdude to run at a slower bit-rate since the chips come pre-set at 8Mhz (internal RC osc). When we run this command, we are enabling the external 20MHz ceramic resonator on the PEG pcb, so future commands can be run at a faster bit rate. For example, after executing the above command, we can execute:
avrdude -F -B 0.5 -P usb -c avrispmkII -p atmega328p -U flash:w:peg.hex
(Assuming that the file peg.hex is in the current directory). This runs at -B 0.5 which is must faster!
If you are using AVRStudio, simply type in the following values on the fuses section of the programmer page:
High Fuses: 0xD9
Low Fuse 0xCE
Or, simply go with the default fuse settings, but change the clock settings to Ext. Crystal Res, >8Mhz (fastest), 258 CK/14CK + 4.1ms