Yikes! Invalid device signature – Da brennen mir die Sicherungen durch

Yikes! Invalid device signature – Da brennen mir die Sicherungen durch

Tags:

Kategorien: Arduino

Ausdrucken Ausdrucken

errorEinmal nicht aufgepasst und beim Übertragen eines neuen Sketches den falschen Mikrocontroller in der Arduino-IDE ausgewählt und es erschien die folgende Fehlermeldung:

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x00
avrdude: verification error; content mismatch

Was war passiert? Ich schaute im Werkzeugemenü nicht genau hin. Die automatische Erkennung erkannte dummerweise einen ATtiny45 statt einem 85er.

Es ist schon verdammt spät und so führte dieser Fehler zum nächsten, denn ohne groß darüber nachzudenken, änderte ich einfach mal die Taktfrequenz von 1 Mhz auf 8 Mhz (“Irgendwas war da noch mit 8 Mhz ?!?”). Nein, war es nichts und der fatale Fehler daran war jetzt, dass ich nicht die internen 8 Mhz ausgewählt, sondern externe 8 Mhz. Aua.

Beim nächsten Versuch den Sketch aufzuspielen bestrafte mich avrdude mit der folgenden Fehlermeldung:

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

Mist. Und nun? Was habe ich getan? Ohne jetzt umfangreich in das Thema “Fuses” einzutauchen – denn ehrlich gesagt ist das auch noch Neuland für mich – war mir nach kurzer Recherche klar, dass ich mit dem falschen Einstellen der Takfrequenz eine Sicherung umgebogen habe und zwar die, dass nicht mehr der interne Quarz, sondern ein externer Quarz zum Schwingen und somit zum Funktionieren des Prozessors verwendet werden soll.
Ganz blöd an der Nummer ist: Wo kein externer Quarz, da kein Schwingen und somit ein toter Mikroprozessor.

Kann man ihn wiederbeleben? Ja, man kann. Es gibt einige Möglichkeiten, aber diese setzten alle weitere Schaltungen voraus, dessen Bauteile ich nicht um 5 Uhr morgens zur Verfügung habe und das gleiche gilt für weitere Geräte die man zur Wiederbelebung verwenden könnte. Quasi einen Defibrillator für Mikroprozessoren 🙂 , da man sie dann High-Voltage programmiert und somit die Fuses wieder zurücksetzen kann.

Im Arduinoforum wurde ich aber am Ende doch noch zufällig fündig und die Sache ist Kinderleicht und wenn man einen lauffähigen Arduino, in meinem Fall einen Uno, zur Hand hat, kann man sich ohne weiteres Zubehör aus dieser Misere befreien und den verfuseden ATtiny wieder zum Laufen bekommen.

Was muss man tun? Atmel hat auf Pin 2 des ATtiny85 einen Anschluss namens XTAL1 liegen. An diesen muss – so fern vorhanden – ein externer Quarz angeschlossen werden, der den ATtiny zum Schwingen bringt. Das muss nun jemand anderer Übergangsweise übernehmen.

Hierbei ist es egal, mit welcher Frequenz wir an diesem Pin schwingen, Hauptsache schwingen. Wir können einen Arduino Uno als ISP-Programmer einsetzen und über Pin 9 des Arduino Unos mit einem speziellen Sketch einen externen Quarz simulieren der schwingt. Somit geben wir dem ATtiny Starthilfe und können ihm einen neuen Bootloader verpassen.

Ist das erledigt, kann man ganz entspannt seinen kleinen ATtiny neu programmieren und er verrichtet wieder brav seinen Dienst.

Am effektivsten lernt man durch Fehler. 🙂

Und hier nun die genaue Vorgehensweise aus dem Arduino-Forum übernommen:

Funktioniert auch mit Atmega’s , einfach MISO, SCK, MOSI und XTAL1 verbinden.

ATtiny45/85 -> Arduino UNO   ATtiny44/84 -> Arduino UNO
VCC -> +5V VCC -> +5V
GND -> GND GND -> GND
7 (SCK) -> Pin13  9 (SCK) -> Pin13
6 (MISO) -> Pin12 8 (MISO) -> Pin12
5 (MOSI) -> Pin11 7 (MOSI) -> Pin11
2 (XTAL1) -> Pin9 2 (XTAL1) -> Pin9
1 (Reset) -> Pin10 4 (Reset) -> Pin10

 

Atmega 328P-PU -> Arduino UNO
VCC -> +5V
GND -> GND
19 (SCK) -> Pin13
18 (MISO) -> Pin12
17 (MOSI) -> Pin11
9 (XTAL1) -> Pin9
1 (Reset) -> Pin10

 

Das grüne Kabel ist das entscheidende. Es simuliert einen Quarz, damit der ATtiny zurückgesetzt wird.

Das grüne Kabel ist das entscheidende. Es simuliert einen Quarz auf Pin 2, damit der ATtiny zurückgesetzt wird.

Aufs Arduino-Board lädt man noch diesen Sketch: ArduinoISP2 (oder von hier: ArduinoISP-master)

Danach stellt man in der Arduino IDE folgendes ein:

Werkzeuge” -> “Programmer” -> “Arduino as ISP
Werkzeuge” -> “Board” -> ( In meinem Fall ist es…) “ATtiny85 @ 1Mhz (internal)
Werkzeuge” -> “Bootloader brennen

 

Das sollte es gewesen sein. Man kann nun wie gewohnt ein Sketch aufspielen.


13 Comments

cpX

30. Oktober 2023 at 12:32 pm

Danke, Danke, Danke und nochmals Danke !

Endlich läuft mein kleinster ATTiny85 mit dem Blink Sketch. 🙂

Ich habe diese Information auch in einem anderen Forum gelesen, leider dort teils zu unverständlich für mich. Ich Danke vielmals für Deine verständlicherer Version hier die ich auch tatsächlich erfolgreich umgesetzt habe.

Mach weiter so gute Sachen.

Von mir: 2 Daumen hoch. 😉

Gruss: Carsten

    Ronin

    31. Oktober 2023 at 7:49 pm

    Hallo Carsten,

    das freut mich. Vielen lieben Dank. Leider komme ich im Moment zeitlich nicht dazu, neue Beiträge einzustellen, auch wenn ich so einiges an Material hätte.
    Hoffe aber, dass es in den kälteren Monaten dann etwas ruhiger wird.

    Viele Grüße,
    Michael

Moe

30. September 2023 at 1:35 pm

leider bekomm ich dies:

Using Programmer : stk500v1
Overriding Baud Rate : 19200
Setting bit clk period : 5.0
AVR Part : ATtiny85
Chip Erase delay : 400000 us
PAGEL : P00
BS2 : P00
RESET disposition : possible i/o
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 12 4 0 no 512 4 0 4000 4500 0xff 0xff
flash 65 12 32 0 yes 8192 64 128 30000 30000 0xff 0xff
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 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
calibration 0 0 0 0 no 2 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: stk500_recv(): programmer is not responding
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

avrdude: stk500_recv(): programmer is not responding.

Kein problem attinys mit der selben verdrahtung und dem basic ArduinoISP script zu programmieren. Wenn ich nun den extra draht von attiny pin 2 zu uno pin 9 hinzu füge (wie auf dem bild auch) bekomm ich die meldung oben. Hab im script LOW_SPEED ein und aus geschaltet, hab nen 10uF kondensator beim uno zwischen reset und gnd geschaltet um aussetzer zu vermeiden, egal was ich versuch “programmer does not respond” wenn ich versuch nen bootloader zu brennen. Glaubste es gibt noch hoffnung, oder muss ich mir nen HVSP basteln? chips sind auf jedenfall nur verfused, gleicher flüchtigkeitsfehler wie du beschrieben hast und nu wird die device signature nich mehr erkannt. Ne idee?

dragonfly

30. Dezember 2020 at 6:13 pm

Danke vielmals für die einfache Lösung jetzt kann ich 2 meiner Attinys (85-20PU) wieder brauchen. Dachte schon die wären für immer defekt. Geniale Lösung und sehr gut erklärt

    Ronin

    1. Januar 2021 at 7:38 pm

    Danke, das freut mich 🙂

TPoE

21. November 2020 at 9:36 pm

Moin… Oder eher Abend du Lebensretter… Ich hatte schon aufgegeben und mich der niederlage angenommen neue winzlinge aus chinesium zu bestellen und mal wieder wochenlang zu warten bis ich über den Artikel gestolpert bin. Super zusammengefasst und hat auch alles ohne probleme geklappt. Vielen dank für die Super Hilfe!!!
Grüße aus Rheinland-Pfalz,
TPoE

Skipper

8. Oktober 2020 at 9:24 am

Moin…
Ich hab gerade versucht nem Arduino Nano (328P) den neuen Bootloader zu verpassen (per USBasp) Funktionierte bei 20 Nanos problemlos… Aber ausgerechnet der, der gerade in einem Projekt verlötet ist, hats nicht hingehauen…
Bekomme da diese Fehlermeldung:

avrdude: Device signature = 0x18950a
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.

Kann ich den noch retten?

    Ronin

    8. Oktober 2020 at 11:21 am

    Hi Skipper,

    schwer zu sagen. Was stand im Rest der Fehlermeldung? (Von der Signatur “0x18950a” habe ich noch nie gehört oder gelesen.)

    Möglicherweise funktioniert es nur nicht, weil der eingebaute Nano die Übertragung eines neuen Bootloaders blockiert? Alle Pins frei, die zum programmieren benötigt werden, oder hast Du auf einem von denen was geschaltet? Kannst Du alles abklemmen?

    Viele Grüße, Michael

Dennis Degen

4. März 2020 at 12:20 am

Hallo. ich habe auch den selben Fehler nur leider einen Arduino MEGA 2560 und keinen Uno…
Der link den du da geteilt hast enthält einen Code nur für den Arduino Uno soviel ich gesehen habe ?
Gibt’s auch einen für den Mega ? bzw wie müsste ich den umschreiben ?

Stefan Neumann

4. September 2019 at 4:40 pm

Es ging bei mir sogar noch einfacher. Ich nutze den Arduino Uno als ISP Programmer. Dies bleibt alles verbunden wie gehabt. Dazu dann ein Jumperwire an Pin 2 des Attiny85 und das andere Ende an den Quarz (Pin welcher näher am Außenrand des Boards liegt.) des Adruino Uno Boards halten. Das reicht dem Attiny als Takt aus und ich konnte direkt den Bootloader brennen.

Rico

14. Januar 2019 at 10:18 pm

Ich danke dir für diese Lösung. Ich sitze hier schon gefühlte 10 Stunden und es wollte nichts klappen. Dank deiner Anleitung klappt alles wieder einwandfrei. Vielen Dank.

    Ronin

    14. Januar 2019 at 11:01 pm

    Hallo Rico,

    gerne. Freut mich, wenn ich helfen konnte.

    Viele Grüße,
    Michael

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.