Can't program with USB AVR ISP

Greetings - I’m trying to started using my USB AVR Programmer, but either I’m a complete moron, or I’ve already damaged it.

I’m trying to use the programmer to burn some virgin ATtiny44a SOICs with an existing hex file. The file is known to work, I just need to get it written.
I have successfully got WinAVR, AVRStudio, and the Pololu drivers installed. AVRStudio sees the programmer and apparently connects to it. Same for avrdude on the command line. However, I cannot seem to get the writing process to happen.

At this point, I’ve got naked SOICs in a spring-loaded adaptor, but I first tried connecting to an ISP header on-target. I discovered a schematic error there and found that the +12v rail was connected to the ISP VCC line, which is why I’m concerned I may have damaged the programmer. Valid concern?

I would wholeheartedly agree that I fried the programmer except that I’ve also got an Arduino UNO here setup as a programmer, and that isn’t working either, which is causing me to suspect operator error somewhere.

Command I’m trying and results below:

C:\WinAVR-20100110>avrdude -v -c stk500 -P com6 -p t44 -U flash:w:main.hex

avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
         Copyright (c) 2000-2005 Brian Dean, [bdmicro.com/](http://www.bdmicro.com/)
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\WinAVR-20100110\bin\avrdude.conf"

         Using Port                    : com6
         Using Programmer              : stk500
         AVR Part                      : ATtiny44
         Chip Erase delay              : 4500 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : possible i/o
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     6     4    0 no        256    4      0  4000  4500 0xff 0xff
           flash         65     6    32    0 yes      4096   64     64  4500  4500 0xff 0xff
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500
         Programmer Model: STK500
         Hardware Version: 15
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 4.5 V
         SCK period      : 1.1 us
         Varef           : 0.0 V
         Oscillator      : 3.686 MHz

avrdude: stk500v2_command(): command failed
avrdude: stk500v2_command(): unknown status 0xc9
avrdude: stk500v2_program_enable(): cannot get connection status
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Trying to just read the device ID in AVRstudio, I get the following:

Timestamp:	2012-04-30 21:36:03.812
Severity:		ERROR
ComponentId:	20100
StatusCode:	1
ModuleName:	TCF (TCF command: Device:startSession failed.)

Failed to enter programming mode. ispEnterProgMode: Error status received: Got 0xc0, expected 0x00

Other things I’ve tried:
In case my SOIC adapter had a problem, I tried using the programmer to upgrade my Arduino Bootrom via the arduino ISP header, similar results.
As mentioned, I’ve tried using the arduino as a programmer, similar results.
Going through so many online tutorials, I’ve been confused about the -c option to avrdude, so I’ve tried many options: stk5000, avrisp, avrisp2, etc.

From looking through a lot of debugging help, it looks like mis-wiring is the common problem here, but I assure you I’ve triple- and quadruple-checked my connections. I’ve probed from the back of the Pololu board all the way to the pins in the SOIC socket to verify all connections are correct and have good contact throughout.

Anything else I’ve missed?

A few other things I’ve checked:

Programmer is new, but have verified 1.07 firmware is loaded.
Have tried varying the programming baud rate from the command line, Pololu utility, and AVRstudio windows, no effect.
Have tried powering SOIC via programmer, via external supply (SOIC adapter board has USB to pin header), and on-board supply (when on-target)

Hello, Herbie.

I’m sorry you are having trouble.

Connecting 12 V to the programmer’s “ISP VCC” (labeled VDD on the programmer) could certainly cause permanent damage to it. It can not tolerate voltages much higher than 5 V. Also, that line is supposed to be connected to the target AVR’s VCC pin, so it is possible you fried an ATtiny44a in the process.

You said your quadruple-checked your connections, but could you tell us what they are so we can check them too? How are you powering the AVR?

Could you please attempt to program, verify that the programmer’s red LED is on, then open the Pololu USB AVR Programmer Configuration Utility and tell us what the error is?

–David

Thanks for the response.

Answers as best as I can manage:

RE: Fried programmer: I figured as much, have ordered a replacement/backup. The Attiny44 I’m trying to program currently is new. I will assume the on-target ATtiny44 is fried from the in-circuit programming attempt.

Here’s the error from a failed programming attempt:
“The SPI command for entering programming mode was sent, but the expected response from the target was not received. Make sure that the ISP frequency setting is less than 1/4th of the target’s clock frequency.”

When I first plug stuff in, only the green LED is on, red is flashing. After programming attempt, amber flashes and red is solid.

AVR is powered by a USB->header adapter supplied with my SOIC breakout/adapter. It is plugged into the same USB hub as my AVR programmer.
(the two-pin header on the RHS in the attached photo)

Connections are as followed (verified continuity again as I typed this in:)

AVR Programmer…ATtiny44a
(bottom of board)…SOIC pins
VDD …Pin 1
MISO…Pin 8
MOSI…Pin 7
SCK…Pin 9
GND…Pin 14
'RST…Pin 4

Additional question: I have not yet set the fuses, so I’m assuming they’re in the default state. Should I try to program these first?

Your connections sound correct. As the error message says, you need to make sure that the ISP frequency settings is less than 1/4th of the target’s clock frequency. The default setting of 200 kHz should be fine, but maybe it has been changed. Could you look at the ISP frequency in the Pololu USB AVR Configuration Utility and tell me what it is set to?

Don’t worry about programming the fuses yet. You won’t be able to until we fix this error.

–David

David, sorry for the delay, was on travel and couldn’t get back to this right away.

For completeness: I tried a variety of frequency settings, down to the lowest possible, with no change.

SOLUTION: Looks like initial guesses were the right one: With a replacement programmer, I was able to read, set fuses, and flash the loose SOICs in the adapter all on the first try. I am having the PCB reworked now to solve the VCC-misconnect problem and will attempt actual in-circuit programming once I’ve rechecked all those connections.

Lesson learned: Don’t trust a board you didn’t build yourself. Check everything critical BEFORE you plug in your own equipment.

Thanks for the help from everyone.