Bootloader auf ATMEGA328P-PU

Hallo zusammen, ich habe zwei Arduino UNOs wie in folgendem Beispiel miteinander verbunden: http://arduino.cc/en/Tutorial/ArduinoISP
Nun versuche ich auf den einen UNO den Bootloader"ATmega328 on a breadboard (8MHz internal clock)" zu brennen. Leider kommt immer folgende Fehlermeldung:
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Gooogle sagt mir, dass es oft Probleme gibt, wenn der falsche ATmega verwendet wird, z.B. 328 anstatt 328P. Das kann ich aber ausschließen. Hat jemand eine Idee was hier falsch läuft? Beide UNOs funktionieren einzeln, ich kann auf beide Sketche hoch laden. Ich bin langsam ratlos.

Hehe, das ist ja witzig. Irgendwie kommen diese Woche alle auf die Idee einen Atmega328 (ohne P) zu verwenden :smiley:
Schau mal hier: Maintenance - Wartungsmodus
Genau dieses Problem hatte ich (wie diverse andere Leute hier) in der letzten Zeit auch.
Der letzte Thread dazu ist von vorgestern: http://arduino.cc/forum/index.php/topic,141618.0.html
Mario.

Ja Mario, dieses Phänomen habe ich auch bereits bemerkt, daß gleiche Probleme Grüppchenweise auftauchen.
Grüße Uwe

Ich glaube wir stehen kurz davor ein grundlegendes Prinzip zu entdecken, wie wir die Welt beherrschen können. ]:D Man kann offensichtlich Gruppen von Leuten mittels Arduino im speziellen und µCs im allgemeinen dazu bringen gleiche oder ähnliche Dinge zu tun. Nennen wir es einfach mal ABC-Waffe :fearful: (**A**rduino **B**rain **C**ontroller)

Und ich schau jetzt noch ne Folge "Pinky und Brain" und gehe dann schlafen. Mal sehen was wir morgen so anstellen ...

narf

Gute Nacht und Süße Träume.

Da habt Ihr mich wohl falsch verstanden. Ich habe den ATmega328P. Es ist der richtige Chip. Die Hinweise zum Atmega328 habe ich ja auch gefunden, ich suche schon seit drei Tagen per Google nach der Lösung zu meinem Problem. Wäre es der 328 ohne P, würde er mir in der Fehlermeldung ja auch die falsche Signatur anzeigen. Bei mir zeigt er aber keine Signatur an, wie wenn er den Chip gar nicht finden würde. Hat jemand noch irgend eine Idee?

Grüße,

Sven

Hmm, das war aus Deinem ersten Post aber nicht wirklich ersichtlich. Denn Du schreibst ja selbst:

Nun versuche ich auf den einen UNO den Bootloader"ATmega328 on a breadboard (8MHz internal clock)" zu brennen.

Und da steht nix von einem "P". Poste doch mal die genaue und vollständige Fehlermeldung die avrdude ausspuckt.
Das sich das Tool über die Signatur beschwert, scheint der Chip ja wniegstens ansprechbar zu sein.

Hast Du auch die folgenden beiden Hinweise im Tutorial beachtet?

Note for Arduino 1.0: you need to make one small change to the ArduinoISP code. Find the line in the heartbeat() function that says "delay(40);" and change it to "delay(20);".

Note for the Arduino Uno: you'll need to add a 10 uF capacitor between reset and ground.

Zumindest solltest du uns die ausgelesene Signatur verraten. Wenn er nicht die des erwarteten Mikrocontrolers liefert, wäre das der erste Ansatzpunkt zur Problemlösung.

Die komplette Fehlermeldung habe ich gepostet. Das ist der komplette Output der Arduino IDE:

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

Leider wird keine Signatur angezeigt. Das oben in den anführungszeichen ATmega328 ohne P steht, liegt daran, dass der Bootloader so heist, nicht der Chip. Deshalb habe ich das ganze in Anführungszeichen gesetzt. Sorry wenn das oben Missverständlich formuliert war.
Beide Tipps von oben sind so befolgt. Sowohl der Kondensator zwischen Reset und Ground, als auch die delay.

Könntest du in den Einstellungen (File-Preferences) ein Häkchen bei "Show verbose output during compilation" und "upload" setzen und die Fehlermeldung posten? Vielleicht wird in dem Fall was zur Signatur angezeigt.

Hier die Ausgabe im verbose mode. Die Einstellung kannte ich übrigens noch nicht, danke.

/home/sven/Arbeitsfläche/arduino-1.0.1/hardware/tools/avrdude -C/home/sven/Arbeitsfläche/arduino-1.0.1/hardware/tools/avrdude.conf -v -v -v -v -patmega328p -cstk500v1 -P/dev/ttyACM0 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xE2:m 

avrdude: Version 5.11, compiled on Sep  7 2011 at 19:34:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/home/sven/Arbeitsfläche/arduino-1.0.1/hardware/tools/avrdude.conf"
         User configuration file is "/home/sven/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
         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 : STK500
         Description     : Atmel STK500 Version 1.x firmware
avrdude: Send: A [41] . [80]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [05] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [05] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [98]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
         Hardware Version: 3
         Firmware Version: 5.5
avrdude: Send: A [41] . [84]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [85]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [86]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [87]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [89]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [03] 
avrdude: Recv: . [10] 
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [05] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [05] 
avrdude: Recv: . [10] 
avrdude: Send: B [42] . [86] . [00] . [00] . [01] . [01] . [01] . [01] . [03] . [ff] . [ff] . [ff] . [ff] . [00] . [80] . [04] . [00] . [00] . [00] . [80] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: E [45] . [05] . [04] . [d7] . [c2] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: P [50]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: AVR device initialized and ready to accept instructions

Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: V [56] 0 [30] . [00] . [01] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
################################## | 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: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.

Die Signatur 0x000000 sagt doch, dass er gar nichts findet, oder? Ich verstehe das gerade nicht, da ich alle Verbindungen überprüft habe. Es wird für mich gerade immer undurchsichtiger.

Hmm, evtl. hilft ja folgender Link schon weiter:
http://www.mikrocontroller.net/topic/274208
Hast Du mal versucht direkt mit avrdude nur die FUSES auszulesen? Woher stammt denn der ATMEGA328P der programmiert werden soll?

Das Auslesen werde ich mal versuchen. Da muss ich vorher noch etwas man Pages lesen. Im Arduino als ISP ist ein ATmega328P von Watterott mit Arduino Bootloader, da der originale Chip gegrillt wurde. Im zu brennenden Arduino ist ein originaler Arduino UNO Atmega328P drin. Also beide eigentlich auf 16MHz. Ich gehe mal lesen, und mache mich schlau, wie man die Fuses ausliest.

Nochmal eine kurze Frage am Rande. Der Kondensator muss am Reset Pin des ISP angeschlossen werden, oder?

Jetzt habe ich einmal versucht die Fuses auszulesen. Leider mit wenig Erfolg. Ich habe versucht mit folgendem Befehl das High Fuse Byte auszulesen:

avrdude -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 19200 -U lfuse:r:low:b

Da bekomme ich dann auch 0b0 als Ergebnis. Da ja aber der ISP und der zu Programmierende Chip 328p sind weiß ich nicht, ob er jetzt den ISP ausgelesen hat, oder den zu programmierenden Chip. Also habe ich den zu programmierenden ausgetauscht, durch einen ATmega8. Den obigen Befehl umgebaut auf:

avrdude -c arduino -p m8 -P /dev/ttyACM0 -b 19200 -U lfuse:r:low:b

Dann kommt die Fehlermeldung:

avrdude: Device signature = 0x1e950f
avrdude: Expected signature for ATMEGA8 is 1E 93 07
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Wenn ich versuche einen Bootloader auf den ATmega8 zu flaschen, dann kommt wieder die obige Fehlermeldung mit Device Signature 0x000000
Mir kommt es so vor, wie wenn ich nur den ISP sehe, und nicht der Chip der programmiert werden soll. Die Verkabelung habe ich schon mehrmals überprüft, und gewechselt. Hat noch irgend jemand eine Idee wo der Fehler liegen könnte? Oder muss ich mir ein Programmiergerät kaufen?

Grüße,

Sven