Device signature = 0x000000

Good day all,

After Following this tutorial, I made a custom PCB using an atmega328p-au (SMD version). I just received it off jlpcb (I used their SMT soldering service), however despite many attempt for the past 3 days, using my arduino UNO, I can not burn bootloader onto the new PCB so I can then upload my code.

I searched the internet with possible fix but none worked so far, and unfortunately I do not own any electronic equipment (oscilator, voltmeters, etc.) to find out if the pcb works or not.

Here are my schematics, PCB design, and step by step of what I am doing.

  1. I plug my arduino UNO to my USB port,
  2. I upload the blink code to my UNO to make sure it works,
  3. I upload ArduinoISP code to UNO,
  4. I select arduino nano for the board (as target), and change to Arduino as ISP in the ''tools'' menu
  5. burn bootloader
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM3 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m 

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         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
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Erreur lors de la gravure de la séquence d'initialisation.
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Just a comment on the 6 pin Arduino ISP Programmer. It is wired in a non standard fashion and you will not be able to use a 6 pin cable connected to a Programmer.

Check your wiring very carefully.

Follow this tutorial for bootloading it.
http://www.gammon.com.au/forum/?id=11635

It's too bad you didn't follow the ICSP header connections, that could have made your board easier to use.
Not a big deal, an adapter can be wired up to allow mating to a standard programmer.

1 MISO VCC 6
2 SCK MOSI 5
3 Reset GND 4

CrossRoads:
Follow this tutorial for bootloading it.
http://www.gammon.com.au/forum/?id=11635

It's too bad you didn't follow the ICSP header connections, that could have made your board easier to use.
Not a big deal, an adapter can be wired up to allow mating to a standard programmer.

1 MISO VCC 6
2 SCK MOSI 5
3 Reset GND 4

I checked the wiring carefully 20 times and I did it correctly. sadly the issue isn't because of a wiring mistake.

I placed an LED into the IR spot (on the left of the PCB) to check if power is going through the PCB, and Yes: the LED light up as soon as I plugged the GND and 5V from the arduino (alongside MISO, MOSI, etc.) on the right header connection of my PCB.

I also tried Nick Gammon Board_Detector sketch but with no success:

Atmega chip detector.
Written by Nick Gammon.
Version 1.20
Compiled on Aug 12 2020 at 15:03:34 with Arduino IDE 10813.
Attempting to enter ICSP programming mode ......................................................
Failed to enter programming mode. Double-check wiring!
Programming mode off.

Here is a view at my PCB design into EasyEDA, maybe someone can spot something wrong on the circuit itself ... (I hide the Top layer which is GND and bottom layer which is VCC to make things easier but they are there)

What's the part number used for X1? That looks more like the pads a Crystal vs a resonator. A crystal would need ~22pF caps on X1, X2 (pins 7, 8) to Gnd placed near the crystal.

You don't have 0.1uF caps on VCC, VCC, or AVCC. I've never tried using a '328P that only had larger caps.

Your schematic doesn't show pins 31, 32 being brought out. Having Rx, Tx on pads would have allowed debugging via Serial interface with a PC possible, which always makes life easier.

CrossRoads:
What's the part number used for X1? That looks more like the pads a Crystal vs a resonator. A crystal would need ~22pF caps on X1, X2 (pins 7, 8) to Gnd placed near the crystal.

You don't have 0.1uF caps on VCC, VCC, or AVCC. I've never tried using a '328P that only had larger caps.

Your schematic doesn't show pins 31, 32 being brought out. Having Rx, Tx on pads would have allowed debugging via Serial interface with a PC possible, which always makes life easier.

Here is the link to the SMD 16 Mhz Crystal used as X1

I have a 10uf and 220nf capacitor (C1 and C2 on the left side) connected to VCC, AVCC,

and no I didn't link RX and TX pins on my PCB as I didn't think i would need them, I could always try and hold jumper wires directly to those pins on my PCB if you think it could tell us what's wrong (to which pin on the arduino uno do I plug the other side of the jumper wire then ?)

I reviewed the schematics and PCB design once again, and could a missing capacitor linking AREF (pin 20) to ground causing this issue ?
How should I proceed to eventualy add a capacitor at this point ? Can I link +5V off my arduino uno to a breadboard, place a 10uf capacitor then link it to my PCB ? Do I need it just to program the atmega or is it required for the PCB to run (considering I have already 2 capacitors already soldered in the PCB to VCC?

Thanks.