Ich verwende einen FTDI-basierten Bit-Bang-Programmierer für meine AVR-MCUs mit AVRDUDE. Es funktioniert perfekt mit ATmega32A, aber nicht mit ATtiny45.
Der Befehl, den ich verwende, um zu versuchen, ob es funktioniert, lautet:
avrdude.exe -c pinb -P ft0 -B 4800 -U lfuse:r:-:h -F
Das -c pinb
steht für folgende Konfiguration:
miso = 6; # DCD
sck = 5; # DSR
mosi = 3; # CTS
reset = 7; # RI
Für ATmega32A ( -p m32
) bekomme ich:
ft245r: bitclk 4800 -> ft baud 2400
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e9502
avrdude.exe: reading lfuse memory:
Reading | ################################################## | 100% 0.02s
avrdude.exe: writing output file "<stdout>"
0xe4
Für ATtiny45 ( -p t45
) bekomme ich:
ft245r: bitclk 4800 -> ft baud 2400
avrdude.exe: ft245r_program_enable: failed
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0xffffff
avrdude.exe: Yikes! Invalid device signature.
avrdude.exe: Expected signature for ATtiny45 is 1E 92 06
avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as FF
avrdude.exe: safemode: efuse reads as FF
avrdude.exe: reading lfuse memory:
Reading | ################################################## | 100% 0.02s
avrdude.exe: writing output file "<stdout>"
0xff
avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as FF
avrdude.exe: safemode: efuse reads as FF
avrdude.exe: safemode: Fuses OK
avrdude.exe done. Thank you.
Beachten Sie, dass alles als 0xFF gelesen wird.
Die Verkabelung habe ich schon mehrfach überprüft. Die MCU befindet sich im Lagerzustand, ohne Firmware- oder Sicherungsänderungen. Warum funktioniert es nicht?
Bearbeiten 1: Bitclock/Baudrate angeben . Wie in den Kommentaren vorgeschlagen, habe ich versucht, die Kommunikationsgeschwindigkeit zu reduzieren. Leider hat die Windows-Version von AVRDUDE 5.3.1 die Optionen -B und -b nicht korrekt erkannt. Also habe ich das neueste AVRDUDE 5.11.1 mit ft245r.patch von bug #30559: Ft232 bit-bang support on Ubuntu kompiliert. Jetzt kann ich zum Beispiel Baudrate = 200 bekommen, aber immer noch kein Erfolg.
Edit 2: Voltmetering der Drähte . Da ich AVRDUDE auf niedriger Geschwindigkeit betreibe, überwache ich die 4 Ausgänge (MOSI, MISO, SCK, RESET) mit einem Voltmeter. Alle ändern sich, bis auf das MISO-Kabel - es scheint auf dem hohen Niveau zu bleiben. Wahrscheinlich habe ich zwei kaputte Chips?
Bitte versuchen Sie es mit -B20 oder -B50 -B100 Flags, wenn Ihr Programmierer dies unterstützt. Der beste Weg, ein ATtiny zu flashen, ist, USBTiny von einem anderen ATTinyX5 zu erstellen :)
Wenn Sie Ihre ATTiny mit einigen niedrigen Geschwindigkeiten betreiben (ich betreibe meine zum Beispiel mit 8 kHz, ja, es ist möglich, sie zu takten), müssen Sie die SCK-Impulse am Programmierer verlangsamen.
Bearbeiten: Ich möchte dies hinzufügen, avrdude erlaubt kein USBTiny mit einem höheren Flag als -B250. Aber da ich mit ATTiny Clock (32 kHz, 8 kHz ...) experimentiere, brauche ich -B400 sogar -B2000 ... Also einfach avrdude aus der Quelle neu kompiliert und das Limit auf 9000 erhöht und keine Probleme haben. Hack funktioniert gut. Außerdem brauchen Sie nicht zu warten, um das gesamte Programm zu flashen. Um Low-Hz-Fused-Attiny zu retten, kompilieren Sie jedes Programm mit 1/8-MHz-Flags und CPU-Einstellungen. Dann nur kurz flashen und abbrechen. Dadurch werden die Sicherungseinstellungen wiederhergestellt, und Sie können alles, was Sie wollen, mit hoher Geschwindigkeit neu programmieren, zum Beispiel -B1-Flag. (Ich verwende diese Einstellung als Standard, da sie am schnellsten ist und mit 8 MHz 16 MHz PLL-getakteten ATtiny85 arbeitet. Aber -B1 programmiert Ihre 1 MHz verschmolzenen Chips nicht.)
Viele Grüße Erdem
Gustavo Litowski
Goodrone
Mäusez
Jippie