Geänderte Sicherungen auf ATtiny85, jetzt ungültige Gerätesignatur

Ich habe die Taktsicherungsbits auf meinem ATtiny85 geändert. Jetzt kann ich nichts daran flashen oder sogar die Sicherung zurückwechseln. Ich bekomme den Fehler:

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

Der Befehlszeilenbefehl, den ich ursprünglich zum Wechseln der Sicherung verwendet habe, lautete:

avrdude -p attiny85 -P com8     -c stk500v1    -b 19200 -U lfuse:w:0x62:m -U flash:w:main.hex

Jetzt verstehe ich, dass ich die Taktsicherung für ein oszillierendes Taktsignal eingestellt habe, nicht für einen Kristall. Ich habe hier gelesen , dass ich das nötige Taktsignal von einem stk500 liefern kann. Mein Arduino UNO fungiert als Programmierer (und in den Befehlszeilenargumenten sage ich avrdude tatsächlich, dass es ein stk500 ist). Wie verbinde/konfiguriere ich UNO und ATtiny, um das notwendige Taktsignal zu liefern?

BEARBEITEN

Ich versuche nicht, Hochspannungs-Parallelprogrammierung zu verwenden. Ich möchte nur das externe Taktsignal liefern, das der AVR jetzt erwartet, um ihn normal zu programmieren.

Ich habe einen zweiten Arduino und habe versucht, eine 16-MHz-Rechteckwelle an Pin 2 (CLK1) des ATtiny85 zu senden, indem ich den Code auf dieser Seite verwende . Als ich jedoch versuchte, den AVR mit beiden daran angeschlossenen Arduinos zu programmieren (sowohl die Uhr als auch der Programmierer), bekam ich den gleichen Fehler wie zuvor. Irgendeine Idee, was falsch ist?

Haben Sie über den Hochspannungsteil des Beitrags gelesen, auf den Sie verlinkt haben? Das müssen Sie tun. Sind Sie sicher, dass Arduino +12 V direkt liefern kann (ich denke, dass dies nicht möglich ist, aber ich habe es nie verwendet).
Ein Arduino kann alleine keine 12V liefern. Es sei denn, Sie haben eine 12-V-Stromversorgung und verwenden einen Transistor zum Ein- und Ausschalten.
Meinst du, ich brauche 12V für das Taktsignal? Ich habe den Artikel so interpretiert, dass ich nur 12 V benötige, wenn ich das Problem über Hochspannungs-Parallelprogrammierung beheben möchte, aber ich sollte in der Lage sein, dies vollständig zu vermeiden und den AVR wie gewohnt zu programmieren, wenn ich nur das gewünschte Taktsignal liefern kann, oder? Siehe meine Bearbeitung oben.

Antworten (3)

Die Jungs im Arduino-Forum haben mir geholfen. Anscheinend hat mein Code kein PWM erstellt. Ansonsten geht das Konzept auf. Hier ist ihre Antwort und alle meine Schritte.

Wenn der von Ihnen eingegebene Befehl wirklich das ist, was Sie verwendet haben, haben Sie die Sicherung für eine externe Taktquelle jeglicher Art nicht gesetzt. Das niedrige Sicherungsbyte von 0x62 ist die Standardsicherungseinstellung für das ATtiny85-Gerät, das den internen 8-MHz-Oszillator verwendet. Sie können dies leicht im Datenblatt oder auf dieser Website überprüfen, die ein großartiges Tool zum Ermitteln der richtigen Sicherungen ist:

http://www.engbedded.com/fusecalc

Normalerweise würden Sie die MCU-Frequenz im MAKEFILE definieren, aber ich bin mir nicht sicher, wie das mit Arduino funktioniert. Dann müssten Sie die Baudrate (-b 19200) nicht angeben, da dies vom Programmierer und AVRDUDE herausgefunden würde.

Wenn Sie wirklich überhaupt nicht mehr mit dem Gerät kommunizieren können, müssen Sie möglicherweise einen HVSP verwenden, um die Sicherungen auf die Standardeinstellungen zurückzusetzen. Zu diesem Zweck habe ich einen gebaut.. es ist nicht so schwierig, wenn Sie sich mit den AVR-Geräten auskennen. Hier ist eine Website, auf der einige der Schritte detailliert beschrieben werden:

http://www.simpleavr.com/avr/hvsp-fuse-resetter

Sie hatten Recht mit der Bedeutung von 0x62 (ich schätze, dass ich die Sicherung tatsächlich auf 0x60 gesetzt habe). Und vielen Dank für die Anweisungen zum Hvsp-Sicherungsrücksetzer.

Wenn Sie sich den Abschnitt Sicherungen des Datenblatts ansehen, könnten Sie diese Sicherungen interessieren:

  • CKOUT - gibt den Gerätetakt am CLKO-Pin aus. Dies sollte perfekt sein, um das beschädigte Gerät mit einer Uhr aus dem funktionierenden Arduino zu versorgen. Wenn weiterhin Probleme auftreten, versuchen Sie, einen langsameren Takt bereitzustellen (z. B. 1 MHz).

  • RSTDISBL und SPIEN - Ich empfehle Ihnen, diese Sicherungen niemals zu berühren - andernfalls benötigen Sie eine serielle Hochspannungsprogrammierung, um sich wiederherzustellen (da gewesen)