Beim Experimentieren mit dem Stromverbrauch verschiedener Taktraten durch Setzen von Fuse-Bits habe ich anscheinend einen ATTiny84-Chip irreversibel auf den internen 128-kHz-Oszillator programmiert, und jetzt kann avrdude keine SPI-Kommunikation mehr mit dem Chip herstellen.
Ich habe einen Arduino Duemilanove verwendet, um den Chip mit der Skizze "ArduinoISP" zu programmieren.
Einige Avrdude-Befehlszeilen, die ich verwendet habe, wenn sie helfen - meine vergeblichen Versuche, es wieder auf 1 MHz zu bringen:
avrdude -p t84 -C "C:\Program Files (x86)\arduino-1.0.4\hardware\tools\avr\etc\avrdude.conf"
-c stk500v1 -P COM7 -b 19200 -U lfuse:w:0x62:m -u
avrdude -p t84 -C "C:\Program Files (x86)\arduino-1.0.4\hardware\tools\avr\etc\avrdude.conf"
-c stk500v1 -P COM7 -b 19200 -U lfuse:w:0x62:m -u -B833 -i833
Ich habe viele verschiedene Verzögerungen in den Einstellungen -B und -i ausprobiert, die von 1 us bis 10000 us reichen. Ausgabe ist:
avrdude: please define PAGEL and BS2 signals in the configuration file for part
ATtiny84
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.07s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Das Hinzufügen der Option -F hilft nicht - es versucht zu programmieren, aber die Sicherungseinstellung übernimmt nicht.
Habe ich diesen $2,50-Chip für immer verloren? :)
OK - Ich habe eine Version der ArduinoISP-Skizze gefunden, die eine langsame Option für die SPI-Programmierung unterstützt:
https://github.com/adafruit/ArduinoISP/blob/master/ArduinoISP.ino
Durch die Definition des LOW_SPEED
Makros konnte ich die Fuse-Bits auf die Standardeinstellung von 1 MHz umprogrammieren. Problem also gelöst.
LOW_SPEED
. Danke!https://github.com/lmpipaon/ArduinoISP_slow_SCK.git
ArduinoISP langsames SCK
Es ist eine Modifikation der Skizze Arduino ISP, die es ermöglicht, dass eine niedrigere SCK-Frequenz Mikrocontroller mit langsamen Takten programmiert, z. B. unter Verwendung der durch 8 geteilten Watchdog-Uhr.
Wenn der Programmiermodus beginnt, beginnt ArduinoISP Niederfrequenz mit dem System Clock Prescaler.
Wenn der Programmiermodus beendet ist, wird der System Clock Prescaler wieder auf 1 gesetzt
Ich gerate manchmal in diese Situation, wenn ich Flash und Fusebits eines Teils separat programmiere (AVR Studio 4 behauptet, dass die Teilesignatur falsch ist, also lässt es mich nicht das .elf-Format verwenden).
Ich habe versucht, die Programmiertaktrate so niedrig wie möglich zu senken, und wie Sie funktioniert es nicht. Was funktioniert , ist das Entlöten des Kristalls und das Ersetzen durch einen Impulsgenerator, der auf etwa 1 MHz eingestellt ist, gerade lange genug, um die Sicherungen neu zu programmieren. Wenn Sie keinen Benchtop-Funktionsgenerator haben, sollte es schnell gehen, einen einfachen R/C- oder Quarzimpulsgenerator zu bauen. Viele Schaltpläne online und es ist ein nützliches Werkzeug, das man immer dabei haben sollte.
Andreja Ko
VierfachA
Andreja Ko