avrdude reports wrong signature

Hi all. I'm sure this is something simple that I've overlooked, but I can't seem to work it out...

I am trying to program an atmega644p with an Arduino Uno based board using ICSP.

When I run this command:
./avrdude -p atmega644p -C ../etc/avrdude.conf -c arduino -P /dev/cu.usbmodemfd1211

I receive the following back from avrdude.
avrdude: Device signature = 0x1e950f
avrdude: Expected signature for ATMEGA644P is 1E 96 0A

avrdude seems to be saying that the signature is that of an atmega328p. That is correct for the programmer, but not for the target processor. In fact it still reports the same error even without the target plugged in.

I am running on OS/X 10.9.1, with Arduino IDE 1.5.6r2. I've also tried 1.0.5.
I'm using the ArduinoISP sketch in the examples folder of the IDE on the programmer board.
The programmer is a Freetronics EtherTen (Arduino Uno-based board). I have also tried a DFRobot BLUNO (also a Uno-based board) as the programmer.

I can use Nick Gammon's Atmega_Board_Detector sketch on the programmer and that reports the correct target (ATMega644p).

What have I missed? :slight_smile:

(deleted)

I've tried with and without cap on both Unos. With a cap installed avrdude doesn't get as far, presumably because of reset timing.

**Edit - Do you mean Gnd and Reset or 5V and Reset?

With a cap between Reset and Gnd or Reset and 5V I get:

avrdude: stk500_recv(): programmer is not responding

or sometimes

avrdude: stk500_getsync(): not in sync: resp=0xe0

I've tried with and without cap on both Unos. With a cap installed avrdude doesn't get as far, presumably because of reset timing.

**Edit - Do you mean Gnd and Reset or 5V and Reset?

This has nothing to do with the cap.
What is happing is avrdude is telling you "hei the device I had read does not match with the right signature"
This is because there some variety of chip versions ex pico version, but still a atmega644
Note that the letter p in atmega644p means you have a pico version which needs less power.
Anyway in order for you be able to program it all you need is tweak your avrdude.conf file
Search with some text editor the word 0x1e950f and change it to the new signature.
Or create a new entry in your avrdude.conf to that chip and then just inform the avrdude with the new target chip
Post results

Thanks Hugo, but not quite.
The problem I have is that avrdude reports that the target processor is an atmega328p (0x1e950f) when the target isn't even connected! It seems to be reading the programmers signature, not the target.

If I connect a target processor, whether atmega328p or atmega644p, I still see the signature above. If I use Nick Gammon's Board Detector sketch (http://gammon.com.au/Arduino/Atmega_Board_Detector.zip), that reports the correct signatures every time.

Interestingly, I did get avrdude to upload a blinking light hex file to another Uno (since they were both 328p's it didn't complain about signatures), but the sketch ended up on both the programmer and the target processor. I'm guessing that's not supposed to happen!

I have also just tried downloading avrdude 6.0.1, which is newer than the version supplied with the Arduino IDE v1.5.6r2. The same problem occurs.

(deleted)

What programmer are you using?

amaggio:
Thanks Hugo, but not quite.
The problem I have is that avrdude reports that the target processor is an atmega328p (0x1e950f) when the target isn't even connected! It seems to be reading the programmers signature, not the target.

Correct.

You have to prevent the reset pin of your Arduino from going LOW. The programmer will see the Mega382P on the Arduino Uno if you don't.

You have to prevent the reset pin of your Arduino from going LOW. The programmer will see the Mega382P on the Arduino Uno if you don't.

Thanks. I tried a 120 Ohm and 100 Ohm resistors between 5V and reset. Neither of them stopped the programmer Uno from resetting. But a 10uF capacitor between reset and Gnd seems to stop it from resetting.

Since that seems to be a step in the right direction, then I'll focus on the errors that I get with the cap connected.

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync(): not in sync: resp=0xe0

These occur on 2 different Uno-based boards (DFRobot BLUNO and Freetronics EtherTen).
As a reminder, I can successfully upload a bootloader using Nick Gammon's ATmega Board Programmer (http://gammon.com.au/Arduino/Atmega_Board_Programmer.zip), so I know that everything is OK from a hardware and wiring perspective. I just can't get avrdude to work. I've now checked about 40 posts from people with avrdude "not in sync" issues. No-one seems to have a definitive solution.