FTDI-basierter Programmierer funktioniert mit ATmega, aber nicht mit ATtiny?

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 pinbsteht 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?

Ist das auf dem gleichen Board? Einfach die neue MCU einbauen und die alte ersetzen? Der Chip könnte defekt sein, hast du einen anderen probiert?
Ich habe einen anderen ATtiny45-Chip ausprobiert, kein Erfolg. Was ich tue, ist einfach die 4 Drähte (+ Strom) zwischen Chips auf einem Steckbrett zu schalten.
könnte Geschwindigkeit sein. attiny ist normalerweise auf einen internen 1-MHz-Oszillator vorkonfiguriert. Versuchen Sie, die Taktfrequenz des Programmierers zu verringern.
Aus Versehen MOSI und MISO gewechselt?

Antworten (1)

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