¿El programador basado en FTDI funciona con ATmega pero no con ATtiny?

Estoy usando un programador bit-bang basado en FTDI para mis MCU AVR con AVRDUDE. Funciona perfectamente con ATmega32A, pero no funciona con ATtiny45.

El comando que uso para probar si funciona es:

avrdude.exe -c pinb -P ft0 -B 4800 -U lfuse:r:-:h -F

El -c pinbsignifica la siguiente configuración:

miso  = 6;  # DCD
sck   = 5;  # DSR
mosi  = 3;  # CTS
reset = 7;  # RI 

Para ATmega32A ( -p m32) obtengo:

 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

Para ATtiny45 ( -p t45) obtengo:

 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.

Tenga en cuenta que todo se lee como 0xFF.

Ya he comprobado el cableado varias veces. La MCU está en su estado original, sin cambios de firmware o fusibles. ¿Por qué no funciona?


Edición 1: especificando bitclock/baudrate . Como se sugiere en los comentarios, he tratado de reducir la velocidad de comunicación. Desafortunadamente, la versión de Windows de AVRDUDE 5.3.1 no reconoció correctamente las opciones -B y -b. Así que compilé el último AVRDUDE 5.11.1 con ft245r.patch del error n.º 30559: compatibilidad con Ft232 bit-bang en Ubuntu. Ahora puedo obtener, por ejemplo, una tasa de baudios = 200, pero aún no tengo éxito.

Edición 2: voltímetro de los cables . Mientras ejecuto AVRDUDE a baja velocidad, controlo las 4 salidas (MOSI, MISO, SCK, RESET) con un voltímetro. Todos ellos cambian, excepto el cable MISO, parece permanecer en el nivel alto. ¿Probablemente tengo dos chips rotos?

¿Esto está en el mismo tablero? ¿Simplemente sacas la nueva MCU y reemplazas la anterior? El chip puede estar mal, has probado con otro?
Probé con otro chip ATtiny45, sin éxito. Lo que hago es simplemente cambiar los 4 cables (+alimentación) entre chips en una placa de pruebas.
puede ser la velocidad. attiny generalmente viene preconfigurado con un oscilador interno de 1 MHz. intente reducir la velocidad del reloj del programador.
¿Cambió MOSI y MISO por accidente?

Respuestas (1)

Intente con las banderas -B20 o -B50 -B100 si su programador lo admite. La mejor manera de flashear un ATtiny es compilar USBTiny a partir de otro ATTinyX5 :)

Si ejecuta su ATTiny a velocidades bajas (yo ejecuto el mío a 8 khz, por ejemplo, sí, es posible sincronizarlo), necesita reducir los pulsos de SCK en el programador.

Editar: quiero agregar esto, avrdude no permite USBTiny con un indicador más alto que -B250. Pero como estoy experimentando con el reloj ATTiny (32 khz, 8 khz...), necesito -B400 incluso -B2000... Así que simplemente volví a compilar avrdude desde la fuente y aumenté el límite a 9000 y no tengo problemas. Hack funciona bien. Además, no necesita esperar para flashear todo el programa. Para rescatar attiny fusionado de baja frecuencia, compile cualquier programa con indicadores de 1/8 MHz y configuraciones de CPU. Que simplemente parpadear por un segundo y abortar. Esto restaurará la configuración de los fusibles y podrá reprogramar lo que quiera con alta velocidad, por ejemplo, la bandera -B1. (Uso esta configuración por defecto ya que es la más rápida y funciona con PLL de 8Mhz 16Mhz sincronizado con ATtiny85. Pero -B1 no programará sus chips fusionados de 1Mhz).

Saludos, Erdem