Although Pololu does not guarantee that their Orangutan USB programmer will work with other AVR MPUs, it is remarkably versatile and in fact, I prefer now prefer it to the much more finicky AVRISP mkII. I’m taking a moment here to show that it works well with the AVR Butterfly (which runs at 2.7 - 3.6 V) as well as the atmega64, as implemented in Micromint’s Micro64 module (which includes other hardware such as a real time clock, 32KB external SRAM, etc.). Both MPUs presented issues that required some study before attaching the programmer! My development system is WinXP/AVR Studio 4.13/WinAVR_20070525.
First, programming the Butterfly turned out to be straightforward, if you get the ISP connector on the right way and also, the Butterfly operating voltage has to be at least 3.3 volts. I soldered a 6-pin header to the Butterfly ISP port as described in the Butterfly User Guide and determined that the proper connection is with the ISP cable passing over the joystick as shown in the photo below. This setup will not work if the Butterfly is powered by the 3.0 V lithium coin cell, but it has been 100% reliable if powered by 3 NiCAD batteries (3.6 V) from an external battery pack as shown. I wrote a small RTC program, with an intuitive joystick interface for setting the clock, that can you can download from the Projects section of AVRFreaks (Butterfly_RTC_demo). Needless to say, you have to set the correct MPU type (atmega169) in AVR Studio.
Second, the atmega64 has a weird ISP interface and an extra programming input *PEN, which is said to “enable the serial ISP programming interface if held low while power is applied. *PEN has no other function during normal operation”. Also during programming, the IO pins are remapped so that the designated ISP pins MISO and MOSI (PB3 and PB2) get remapped to PE1 and PE0. *PEN has caused much confusion and there are conflicting reports on the internet as to whether *PEN needs to be grounded, left floating, or tied high. The atmega64 data sheet is amazingly unclear on the use of *PEN, as well. In fact, I have not been able to find a useful account that described in detail how to use an AVRISP-like 6-pin programmer with the atmega64. Finally, the Micromint module has a *RESET input, but the Micromint folks do not tell you how it is connected internally within the module.
My approach was to try various things and presumably due to clean living, the first attempt worked! I was able to program the atmega64 with the following connections to the ISP header (again using AVR Studio 4/gcc).
*PEN – left floating (I’m worried about the reliability of this and will try some other options).
Pin 1: PE1 (MISO)
Pin 2: open
Pin 3: PB1 (SCK)
Pin 4: PE0 (MOSI)
Pin 5: *RESET
Pin 6: Ground
Good job, Pololu! Comments welcome.
Cheers, Jim