Compré un programador "usbasp" de AliExpress para usarlo con mis dispositivos ATtiny84A AVR. Tiene el texto "Tecnología USBASP V2.0 LC" impreso en la parte superior de la PCB, y se parece mucho a esto:
Tengo un cable C232HM (FTDI) que he estado usando con éxito como programador avrdude durante algún tiempo, así que sé que mis dispositivos AVR están funcionando y que estoy usando los pines correctos en el ATtiny84.
Desafortunadamente no he tenido éxito con este nuevo programador. Después de conectar VCC (con el puente J1 configurado para 5V), GND, MOSI, MISO, SCK y RESET (¡y una verificación triple!), avrdude
aparece el siguiente error:
$ avrdude -c usbasp -p attiny84 -vvvv
avrdude: Version 6.3, compiled on Sep 17 2016 at 02:19:28
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/usr/local/Cellar/avrdude/6.3/etc/avrdude.conf"
User configuration file is "/Users/me/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : usb
Using Programmer : usbasp
avrdude: usbasp_open("usb")
avrdude: seen device from vendor ->www.fischl.de<-
avrdude: seen product ->USBasp<-
AVR Part : ATtiny84
Chip Erase delay : 4500 us
PAGEL : P00
BS2 : P00
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 6 4 0 no 512 4 0 4000 4500 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
flash 65 6 32 0 yes 8192 64 128 4500 4500 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
Programmer Type : usbasp
Description : USBasp, http://www.fischl.de/usbasp/
avrdude: usbasp_initialize()
avrdude: usbasp_transmit("USBASP_FUNC_GETCAPABILITIES", 0x00, 0x00, 0x00, 0x00)
avrdude: usbasp_spi_set_sck_period(0)
avrdude: auto set sck period (because given equals null)
avrdude: usbasp_transmit("USBASP_FUNC_SETISPSCK", 0x00, 0x00, 0x00, 0x00)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: usbasp_transmit("USBASP_FUNC_CONNECT", 0x00, 0x00, 0x00, 0x00)
avrdude: usbasp_program_enable()
avrdude: usbasp_transmit("USBASP_FUNC_ENABLEPROG", 0x00, 0x00, 0x00, 0x00)
<= [01]
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude: usbasp_close()
avrdude: usbasp_transmit("USBASP_FUNC_DISCONNECT", 0x00, 0x00, 0x00, 0x00)
avrdude done. Thank you.
No funciona con un suministro externo de 5V (J1 eliminado), o con J1 configurado para 3.3V tampoco.
Con mi alcance, puedo ver que el reloj funciona a aproximadamente 92,6 kHz, pero las señales MISO y MOSI tienen una amplitud muy baja: aproximadamente 1,1 V para MISO y 0,8 V para MOSI. Estos voltajes me parecen un poco bajos:
Leí que J3 se puede usar para configurar el programador en modo "lento" (tenga en cuenta que el ATtiny84 que estoy tratando de programar actualmente ya está funcionando a 8 MHz desde el oscilador interno). Sin embargo, cuando agrego J3, no veo ningún cambio en la frecuencia del reloj; todavía funciona a aproximadamente 92,6 kHz.
Por lo que he leído, los programadores usbasp "chinos" tienden a enviar alguna versión del software que permite la detección de la velocidad del reloj. Sin embargo, no estoy seguro de si esto se traduce en soporte para la opción "-B", porque no importa qué -B
valor proporcione, el osciloscopio muestra que el reloj sigue funcionando a 92,6 kHz.
Me he asegurado de que ningún otro circuito interfiera con el programador. También probé un segundo ATtiny84 "nuevo" (por lo que los fusibles aún están configurados para 1MHz) sin éxito tampoco. Sin embargo, el programador C232HM funciona bien.
Así que nada de lo que he leído parece correlacionarse con lo que estoy viendo con mi dispositivo. Me pregunto si esos voltajes MOSI/MISO son demasiado bajos (y por qué) y también estoy desconcertado de por qué ni J3 ni -B
parecen afectar la frecuencia del reloj.
¿Qué podría estar mal? ¿Qué más puedo investigar?
EDITAR: agregó algo más de información.
El ATtiny recibe alrededor de 5,1 V del programador. Esto no parece fluctuar o caer durante el proceso.
Seguimientos con ATtiny84 en su lugar:
El programador baja dos veces la línea RESET y la línea MOSI llega a aproximadamente 3,3 V. Luego, después de aprox. 100ms el SCL comienza a pulsar a 0-5V, aprox. 94 kHz, y hay actividad en las líneas MOSI y MISO, pero se ve bastante mal:
Sin el ATtiny84 en su lugar (SLK, RESET, MISO y MOSI flotantes), el alcance se ve así:
El rastro magenta es MOSI y sube a unos 5V, pero se ve feo (quizás porque está flotando):
También hay algún tipo de señal en MISO, ¿quizás interferencia de MOSI?
Puse una resistencia de 330 kOhm entre MOSI y GND y una de 1 MOhm entre MISO y GND (todavía no hay ATtiny presente) y arreglé un poco las huellas:
Sin embargo, lo que realmente no entiendo es por qué la señal MOSI (magenta) es tan sucia y por qué hay una señal de reloj en MISO (cian).
Me he estado tirando de los pelos con un problema similar y dado que su información me ayudó a comenzar, pensé en compartir mi resultado y espero que pueda ayudarlo. En primer lugar, estoy usando un USBASP que se parece al tuyo.
Tuve éxito con attiny13 y 45. No tuve problemas con attiny13 pero attiny45 lo configuré de manera predeterminada para usar un reloj externo. Eso significa que debe usar un cristal (lo probé con éxito con 8 MHz y 16 MHz) para hablar primero con el chip. Una vez que pueda comunicarse, puede configurar los fusibles para usar el reloj interno. Una vez que haya hecho eso, su cristal ya no será necesario.
Dicho esto, mi attiny85 permaneció en silencio a pesar de probar cristales de 8, 16 y 20 Mhz y usar exactamente el mismo cableado.
Al igual que tú, noté algo de basura en MISO. En mi captura de pantalla, usé los mismos colores que tú. Como puede ver, obtengo basura en MISO al principio, pero después de un reinicio y un breve retraso (~ 110 µs), MISO parece despertarse y comportarse por sí mismo.
Como referencia, el comando que usé para probar es:
avrdude -c usbasp -p t85 -B4
El -B4
es importante y probé con éxito entre -B4 y -B20. Ralentiza el reloj y -B4 era el mínimo para que funcionara. Sin embargo, tenía chips que NO respondían con -B4. Para ser conservador, comencé con -B16.
Otro punto interesante en comparación con sus capturas de pantalla es que mi línea de reinicio siempre es BAJA y sube brevemente. Eso parece ser lo contrario para ti. No verifiqué si este es un comportamiento normal para el Attiny84 que usa.
Tuve el mismo problema con mi Attiny 25. Cuando agregué -B 4, mi usbasp configuró un reloj a una frecuencia más baja. Parece que el SCK se puede configurar hasta 750000 Hz y el chip solo funciona desde 187500 Hz y más lento. Mi chip se reconoce incluso a una frecuencia SCK de 1000 hz. Ya que uso archivos .bat para programar mis chips. Solo agregaré un -B4 para bajar el reloj y comenzar a trabajar. Gracias por mostrarme el comando.
bruce abbott
davidA
Janka
davidA
bruce abbott
davidA
chris stratton
davidA