# Can't connect to Atmega328p with avrdude

I'm trying to connect to a pretty old Atmega328p that was sitting on a solderless breadboard for years. I'm using a TinyUSB programmer that also powers the MCU.

When I try to connect to it, I have the following message

$avrdude -p atmega328p -c usbtiny avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. I know this MCU is working since it still contains an old program on it and I can make it work. I know the programmer works since on reset, I have some flashing LED (current flash program feature). I've check connections, re-run avrdude, and had the following result:$ avrdude -p atmega328p -c usbtiny  -vvvv

avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/nico/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port                    : usb
Using Programmer              : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 002:020
AVR Part                      : ATmega328P
Chip Erase delay              : 9000 us
PAGEL                         : PD7
BS2                           : PC2
RESET disposition             : dedicated
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    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
Block Poll               Page                       Polled
Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
Block Poll               Page                       Polled
Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
Block Poll               Page                       Polled
Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
Block Poll               Page                       Polled
Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
Block Poll               Page                       Polled
Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
Block Poll               Page                       Polled
Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
Block Poll               Page                       Polled
Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

Programmer Type : USBtiny
Description     : USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp
avrdude: programmer operation not supported

avrdude: Using SCK period of 10 usec
CMD: [ac 53 00 00] [ff fe 53 00]
avrdude: AVR device initialized and ready to accept instructions

Reading |                                                    | 0% 0.00sCMD: [30 00 00 00] [30 00 00 00]
CMD: [30 00 01 00] [30 00 01 00]
Reading | #################                                  | 33% 0.00sCMD: [30 00 02 00] [30 00 02 00]
Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x000000 (retrying)

Reading |                                                    | 0% 0.00sCMD: [30 00 00 00] [f0 00 00 00]
CMD: [30 00 01 00] [f0 00 01 2a]
Reading | #################                                  | 33% 0.00sCMD: [30 00 02 00] [b0 aa fe ff]
Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x002aff
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.

avrdude done.  Thank you.

It seems that either MCU is sending garbage or the ISP cannot read anything.

Without touching to anything, I ran avrdude again, but got the previous result: avrdude: initialization failed, rc=-1.

I need to add that within my multiple avrdude runs, I had one success where the Atmega328p was successfully recognized.

So, the MCU seems to work, the programmer can at least send a RESET signal that seems to work every time, but both of them cannot communicate.

I'm pretty stuck, and don't known what to do to understand what part is failing and solve this issue.

## Edit

I checked conectivity of each SPI cable using a multimeter. I disconnected the SPI end of the cable and made sure I had current flowing from the SPI end of the cable to the leadframe of the MCU. It seems that I have connectivity on each of them.

## Edit 2

I debugged the connections using an oscilloscope, here is the result (CH1: MSI, CH2: MISO):

I tested this for two MCU, each one on a different solderless breadboard. Got similar results in both configurations.

I'm not sure how to interpret this result. MISO should be higher, isn't it ? I would say that the programmer is dead ?

• That looks like connection issue indeed. Is your breadboard are solderless? Jan 5 at 20:54
• The breadboard is indeed solderless, and pretty old. I did check connectivity but could not find any obvious problem (more details at the end of the question post). Maybe the method used (multimeter) is not the best one to handle this sort of connectivity issue ? Jan 6 at 6:47
• Definitely not the best. You'll need an oscilloscope to see how signal might gets corrupted due to poor connection. Try lowering the SCK clock rate with -B 20 key (currently avrdude reports 10 usec for SCK, setting it to 20 will slower it 2 times, you can also try higher values). If your programmer supports it, it might help. Jan 6 at 8:20
• Thanks, I just debugged the connection with an oscilloscope, details added in Edit 2. Lowering SCK clock rate did not change anything Jan 8 at 10:03