Fehler beim Schreiben von ATMega16U4-Sicherungen mit avrdude

Ich versuche, die Sicherungen auf einem ATMega16U4 mit avrdude einzustellen. Das erste Problem, auf das ich gestoßen bin, ist, dass avrdude Version 5.11.1 ATMega16U4 nicht zu unterstützen scheint. Jemand erwähnte auf avrfreaks, dass Sie einfach den ATMega32U4-Block auf avrdude.conf kopieren und die Signatur, Beschreibung und Speichergröße ändern sollten, um sie an den ATMega16U4 anzupassen, und das habe ich getan, hier ist meine avrdude.conf: http://paste.dy. fi/SQP

Das scheint zu funktionieren, aber ich bin nicht 100% überzeugt.

Das eigentliche Problem ist, dass avrdude die Sicherungen nicht setzen kann (ich verwende meinen Buspirat als ISP-Programmierer):

avrdude -c buspirate -p m16u4 -P /dev/ttyUSB0 -U lfuse:w:0xe2:m -U > hfuse:w:0xd8:m -U efuse:w:0xf8:m

BusPirate wird erkannt... **
** BusPirate v3a ** Firmware v5.10 (r559) Bootloader v4.4 ** DEVID:0x0447 REVID:0x3046 (24FJ64GA002 B8) ** http://dangerousprototypes.com ** BusPirate: Verwendung des BINARY-Modus avrdude: AVR-Gerät initialisiert und bereit, Anweisungen zu akzeptieren

Lesen | ################################################## | 100 % 0,02 s

avrdude: Gerätesignatur = 0x1e9488 avrdude: Lesen der Eingabedatei "0xe2" avrdude: Schreiben von lfuse (1 Bytes):

Schreiben | | 0% 0.00s >***fehlgeschlagen;
Schreiben | ################################################## | 100 % 0,07 s

avrdude: 1 Byte lfuse geschrieben avrdude: lfuse-Speicher gegen 0xe2 verifizieren: avrdude: lfuse-Daten von Eingabedatei 0xe2 laden: avrdude: Eingabedatei 0xe2 enthält 1 Byte avrdude: lfuse-Daten auf dem Chip lesen:

Lesen | ################################################## | 100 % 0,00 s

avrdude: Verifizierung ... avrdude: Verifizierungsfehler, erste Nichtübereinstimmung bei Byte 0x0000 0xe2 != 0x5e avrdude: Verifizierungsfehler; inhaltliche Diskrepanz

avrdude: safemode: lfuse geändert! War e2 und ist jetzt 5e. Möchten Sie, dass diese Sicherung wieder ausgetauscht wird? [j/n] j

Es scheint in der Lage zu sein, den Mikrocontroller einwandfrei zu lesen, liest die richtige Signatur und liest die richtigen (Standard-) Sicherungen, ändert sie jedoch nicht.

Hier ist ein detaillierterer avrdude-Ausdruck mit -vvv: http://paste.dy.fi/JA6

Ich verwende einen 12-MHz-Kristall mit 22p-Keramik und habe einen 4,7-kOhm-Pullup-Widerstand am Reset.

Hat jemand eine Ahnung warum es nicht funktioniert? Ich habe die Anschlüsse mit einem Multimeter etc. mehrmals durchgegangen und sie sind alle ok. Ich bezweifle auch, dass das Auslesen des Geräts überhaupt funktionieren würde, wenn die Verbindungen ein Problem hätten. Der ATMega ist nagelneu, nie benutzt, nie programmiert (also die Sicherungen des Schlosses sind nicht gesetzt) ​​usw.

Ich bin mir jetzt ziemlich sicher, dass das Problem in der avrdude.conf liegt. Ein Freund von mir hatte das gleiche Problem.

Antworten (1)

ICH HABE ES GELÖST! Aus irgendeinem Grund wird der AVR mit aktivierten Sperrbits ausgeliefert!? Laut Datenblatt ist das so angegeben. Das Löschen des Chips deaktiviert die Sperrbits und ermöglichte mir, die Sicherungen zu programmieren.

Dago, wie löscht man den Chip?
Wie hast du das gemacht?
Ich habe herausgefunden, dass, wenn Sie zuerst mit etwas programmieren, bevor Sie die Sicherungen setzen, die Arbeit erledigt wird. Es spielt keine Rolle, welches Hex Sie zum Programmieren verwenden, flashen Sie es einfach mit irgendetwas
Ich habe das gleiche Problem mit attiny85. Der aktuelle Ausweichwert ist 0x62. Ich habe keine Ahnung, wie es passiert ist. Ich habe versucht, verschiedene Hex zu löschen und hochzuladen. Aber alles endet mit "Verifizierungsfehler".