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?
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:
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)
Andreja Ko
Schungun
JellicleCat