ATTiny85 funktioniert nicht nach dem Brennen des Bootloaders

Ich habe ein Problem mit meinem ATTiny85. Ich sollte erwähnen, dass ich Arduino als ISP verwende, um es zu programmieren.

Mein ATTiny funktionierte gut, bis ich entschied, dass ich die Taktrate von 1 MHz auf 20 MHz erhöhen musste, also wählte ich ATTiny85 bei 20 MHz aus dem Boards-Menü und klickte dann auf Tools> Bootloader brennen. Aber das war blöd, da jetzt mein ATTiny überhaupt nicht funktioniert. Ich kann darauf keine Skizzen hochladen und wenn ich es versuche, erhalte ich diese Meldung:

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

Meine Frage an Sie wäre also, gibt es eine Möglichkeit, das zurückzusetzen, was ich getan habe? Oder noch besser, damit es bei 20 MHz funktioniert?

Erinnern Sie sich an die Sicherungswerte, die Sie eingestellt haben? Es kann immer noch auf dem Bildschirm sein, wenn Sie ein wenig nach oben scrollen. Sie können einen ATtiny85 mit dem internen Oszillator nicht auf 20 MHz einstellen. Haben Sie eine Taktquelle angeschlossen?
Nein, ich habe keine Taktquelle angeschlossen. Ich habe gerade den Bootloader mit 20 MHz Attiny gebrannt, das als Board ausgewählt ist (und natürlich mit dem Attiny, das mit dem Arduino verbunden ist).
Ich habe ein anderes Arduino, gibt es eine Möglichkeit, die Sicherungen damit zurückzusetzen?
Warum brauchen Sie einen anderen Arduino? Wie Sie es verstehen, haben Sie Ihren ATtiny gemauert, nicht Ihren Arduino. Die Fehlermeldung in Ihrer Frage weist in die gleiche Richtung: Der Arduino ist in Ordnung. Wenn Sie Zweifel an Ihrem Arduino haben, trennen Sie alles außer USB und programmieren Sie dann das BlinkBeispiel. Wenn das gut funktioniert, können Sie zu Ihrem ArduinoISP zurückkehren (ich glaube, das ist der Name der Programmiersoftware, die Sie verwendet haben).
Ohne die genauen Sicherungseinstellungen zu kennen, die Sie verwendet haben, können wir nicht sicher sein, was Sie tatsächlich getan haben. Wenn Sie den Takt tatsächlich auf 20 MHz eingestellt haben, müssen Sie lediglich eine externe Taktquelle anschließen, sei es ein Kristall, ein Resonator oder ein Impuls von einer anderen Schaltung, solange die externe Taktquelle 20 MHz beträgt.
Nur fürs Protokoll (in Bezug auf electronic.stackexchange.com/questions/66721/… ) wollte ich fragen, ob Sie nach der Programmierung eine Taktquelle angeschlossen haben. Wenn meine Vermutung richtig ist, benötigen Sie eine externe Uhr, um das Gerät von diesem Moment an zu verwenden oder neu zu programmieren, bis Sie es schaffen, die Sicherungen auf ihre Standardwerte zurückzusetzen.
Upvoted, also hast du genug Repräsentanten, um in den Chat zu gehen.

Antworten (2)

Ich vermute, Sie haben die Sicherungen des Controllers so eingestellt, dass sie eine externe Taktquelle verwenden, da es unmöglich ist, den internen Oszillator dazu zu bringen, mit 20 MHz zu laufen. Sie können Ihrem Controller neues Leben einhauchen, indem Sie ein Taktsignal an Pin 2 CLKIanschließen und versuchen, die Uhr auf den internen RC-Takt von 8 MHz zurückzusetzen.

Es gibt tatsächlich eine "feste" Version von ArduinoISP , die einen Taktausgang an Digitalpin 9 hat. Ich habe diesen Taktausgang nicht selbst getestet, aber es ist einen Versuch wert. Verbinden Sie also zusätzlich zu den Verbindungen, die Sie bereits zwischen Arduino und ATtiny haben, Arduino Digital Pin 9 mit ATtiny85 Pin 2 (CLKI). Versuchen Sie dann, den internen 8-MHz-RC-Takt zu programmieren.

Weitere Informationen finden Sie im Datenblatt , Kapitel 6.2 „Taktquellen“.

Eine alternative Methode ist die Verwendung eines Hochspannungsprogrammierers, der mit einem Arduino leicht improvisiert werden kann .

Übrigens: Ähnliches passiert, wenn Sie eine RC-Taktquelle < 1 MHz auswählen . In diesem Fall läuft Ihre Controller-Uhr zu langsam für die Standard-ArduinoISP-Software.

Vielen Dank! Dazu brauche ich eine 12-V-Stromquelle (die ich derzeit nicht habe). Ich werde sehen, was ich tun kann, um zu improvisieren. Gibt es ein Problem, wenn die Quelle etwas über 12 V liegt?
@Calin Wie "über 12 V" redest du? Sie können den Chip ziemlich leicht beschädigen ... Ein paar Widerstände könnten verwendet werden, um die Spannung auf 12 V zu senken. Siehe dies: electronic.stackexchange.com/questions/25038/…
OK danke! Ich werde es morgen versuchen, da es jetzt fast Mitternacht ist. Ich halte dich auf dem Laufenden!
Probieren Sie die Optionen für externe Taktquellen aus meiner Antwort aus, bevor Sie den Controller versehentlich mit einer zu hohen Spannung braten. Die Hochspannung muss zwischen 11,5 und 12,5 V liegen (Kapitel 20.7.1 im Datenblatt).
Danke dir! Die "fixed" Version des ArduinoISP hat mir geholfen, mein Problem zu lösen! Ich habe die feste Version auf den Arduino hochgeladen, den Arduino getrennt und den ATTiny wie gewohnt verbunden, aber mit Pin 9 von Arduino, der mit Pin 2 von ATTiny verbunden ist (wie Sie vorgeschlagen haben). Danach habe ich die Arduino IDE geöffnet und ATTiny85 (mit internem 8MHz Takt) als Board und ArduinoISP als Programmer ausgewählt. Ich habe auf Extras> Bootloader brennen geklickt und alles war in Ordnung. Danach habe ich die ursprüngliche ArduinoISP-Skizze aus dem Beispielverzeichnis erneut hochgeladen und konnte die ATTiny erneut mit meinem Arduino als Programmierer programmieren.

Wie @jippie sagte, geht es einfach darum, eine externe Taktquelle anzuwenden (es spielt eigentlich keine Rolle, ob die Taktquelle 20 MHz beträgt oder nicht, sie muss nur etwa 1 MHz erreichen, um die SPI-Programmiergeschwindigkeit von ArduinoISP zu verwalten).

Als Alternative zur oben erwähnten ArduinoISP-Version können Sie ScratchMonkey ausprobieren , das neben der Taktgenerierung auch Software-SPI zur Lösung einiger anderer Taktungsprobleme bietet. Wenn Sie es nicht geschafft haben, Ihren Reset-Pin zu deaktivieren, sollte es keinen Grund geben, auf Hochspannungsprogrammierung zurückzugreifen.