Berndiboy - Homemade Arduboy

Ok hooked up a new board and only soldered this parts:

Reset button

This time a bit different error but still same i would say:

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

Chip is marked with


so it should be the correct chip :slight_smile:

Here a picture of current back. should be ok from solder point of view

What it the part number of the crystal you are using? Are you sure it doesn’t require external capacitors?

This one. The datasheet sais:

c Features

  1. The series are high accuracy resonators whose total
    tolerance is available for less than ±3,000ppm.
  2. The series has high reliability and is available
    for a wide temperature range.
  3. Oscillation circuits do not require external load
  4. The series is available for a wide frequency range.
  5. The resonators are extremely small and have a low
    profi le.
  6. No adjustment is necessary for oscillation circuits.

So i assume no capacitors should be needed. I also measured and it looks ok

If the crystal is oscillating at 16MHz and you’ve double checked that there are no shorts or opens, then I would check the wiring of the programmer and make sure that the power to the 32U4 is correct and stable while you’re attempting to program it.

Next, you would have to look at the signals while programming.

I do not have an oscillator so i cannot tell.

But i checked the soldering again, i even started another new board starting with the crystal making sure no short, then the 32u4 and then only the capacitors. I left out the reset button and
the leds this time as they should not be needed i assume (the button is not used and visual indication i do not need for now).

This time i get this:

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

No “ff” anymore but also nothing else… I do not understand what should be wrong here… I have just a view parts soldered… I think i will have to let the dream go. Would have been cool but i seem to be not able to do it. And as i am too unexperienced i cannot even say what could be wrong :frowning: I have set up an atmega1284p in the past from scratch but with “normal components” and that worked without issues. Maybe i need to solder cables onto the components and do not use a PCB at all…

Only advantage:

My solder skills got improved

does not help but anyway

Do you mean an oscilloscope? If you don’t have one then what did you mean when you said:

Without an oscilloscope, or at least a logic analyser, it can be difficult to get this kind of thing working if you run into trouble.


:unamused: :+1:t2:

Check the power on the uC , GND and VCC, ll need to be wired, check again shorts between programming pins, check again the continuity of the programming pins between header and uC.

The uC report to the programmer that has entered in programming mode but does not report the signature, one or the pins are in short with another usually MISO with SCK somewhere, the signature mismatch can be from under powering the uC ( powering the uC from MOSI, SCK and RESET pins ), check again the programming connections.

Check if the vias on the board are manufactured correctly.

What programmer are you using?

Note that the CLKDIV8 fuse is usually set by default so the atmega32u4 may run only at 2MHz and your programmer may try to communicate with the atmega32u4 too fast.

1 Like

This was the next on the edit of my previous post :sweat_smile:

1 Like

Well i ment that i checked for shorts. Yes looks impossible without an oscylloscope. i have a cheap one (a nano or something like this) but would not know how to use it :rofl:

Shorts i can for sure say i do not have as i did it 3 times now and the pins look good even under a microscope.

I will try to check the power again.

I use an Arduino Uno as a programmer. I always use it and never have issues with it.

What does that mean with the CLKDIV8 fuse? what is this?

The chip is a fresh bought chip without any bootloader on it i would assume.

I ordered the PCBs with testing so all vias should be checked right? This time i also did not put any via on a pad :slight_smile: I learned and improved but did not help :frowning:


I checked the VCC pins and all looks good. But one question came now into my mind:

What voltage supply should i give through VCC from the Arduino? I used 5V but maybe that was wrong? Should it be 3.3V?

A fresh one will have the default factory configuration. So it doesn’t behave the same as one on a ProMicro board.

A fuse is a default configuration bit. when the CLKDIV8 fuse is programmed the clock is divided by 8 on power up. So with a 16MHz clock the atmega32u4 will only run at 2MHz

Have you successfully used it with another MCU? Did you select the Arduino as ISP as programmer (ArduinoISP is wrong) ?

Have you successfully used it with another MCU? Did you select the Arduino as ISP as programmer (ArduinoISP is wrong) ?

Yes i have used it with a fresh Atmega1284p before already. And yes i have selected Arduino as ISP

Somehow i am even too stupid to quote correctly :smiley: sorry …

As a life lesson for me on the old Atmega uC’s batch you can short the outputs how long you want to VCC or GND does not pop ( do not draw more than 200mA on the power pins ), never drive them more than 0.5-0.7V above VCC or below GND, this is the reason that I search the old batch of Atmega, the new ones with U suffix ( Microchip ones ) are made on another process and I do not experiment to much with them, they pop more frequently they are more sensitive.
The old batch was so reliable that I found them inside the Xray guns in medical applications ( Atmega128 )

How do you know the uC has entered programming mode? The programmer may be sending the “Programming Enable” command without reading and checking the 0x53 that is echoed back during the third sent byte. The programmer may just go on to doing the “Read Signature Byte” commands and using them as an indication that program mode has been entered.

If the programmer actually is looking for the 0x53 reply, and not proceeding without it, then there can’t be any problems with power or any of the signals, or the programmer wouldn’t have received the 0x53 and wouldn’t move on to reading the signature without it.

I would hope that any programmer worth its salt would realise this possibility and (at least initially) run below this speed.

Without any other components on the board, either 3.3V or 5V should be fine. 5V may be a better choice.

In theory you are right.

In practice there can be issues in the power side, a short somewhere, or the programmer SPI frequency to be to high, need to be around 500Khz for a uC clock of 2Mhz I believe. :thinking: normally F uC/2 but if the F is a little bit under 2Mhz there will be issues in the communication with uC, so best is F uC/4 for SPI frequency.

Did you upload the default ArduinoISP example or made changes before uploading it?

The default sketch is configured to handle devices with as low as a 1MHz clock. But you could try lowering the SPI clock by 10 times by removing a zero in the line:

#define SPI_CLOCK 		(1000000/6)

Are you sure you wired up the Uno programming wires correctly?

removed a zero and double checked the wiring, no difference :frowning:

avrdude: Version 6.3-20190619
     Copyright (c) 2000-2005 Brian Dean,
     Copyright (c) 2007-2014 Joerg Wunsch

     System wide configuration file is "C:\Clean\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf"

     Using Port                    : COM6
     Using Programmer              : stk500v1
     Overriding Baud Rate          : 19200
     AVR Part                      : ATmega32U4
     Chip Erase delay              : 9000 us
     PAGEL                         : PD7
     BS2                           : PA0
     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  9000  9000 0x00 0x00
       flash         65     6   128    0 yes     32768  128    256  4500  4500 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
       lock           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
       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.05s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.05s

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.

Error while burning bootloader.

Can you tell us more about this “cheap” oscilloscope that you have? Even if it’s not fast enough to look at the 16MHz crystal frequency, it may be able to look at the programming signals. It could verify:

  • That the 32U4 is seeing the programmer toggle the reset line.
  • If a programming clock signal is being received on the 32U4 SCK pin.
  • If a proper signal is being received on the PDI (MOSI) pin.
  • If the 32U4 is sending a response on the PDO (MISO) pin.