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
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
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