usbasp con avrdude: error: habilitación del programa: el objetivo no responde. 1

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:

usbasp

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!), avrdudeaparece 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:

alcance

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é -Bvalor 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 -Bparecen 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:

  • Amarillo: SCL (USBasp pin 7 / ATtiny84 pin 9) - 5V
  • Cian: MISO (USBasp pin 9 / ATtiny84 pin 8) - ~1.1V
  • Magenta: MOSI (USBasp pin 1 / ATtiny84 pin 7) - ~3.3V
  • Azul: REINICIO (USBasp pin 5 / ATtiny84 pin 4) - 5V

lleno

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:

de cerca

Sin el ATtiny84 en su lugar (SLK, RESET, MISO y MOSI flotantes), el alcance se ve así:

sin ATtiny

El rastro magenta es MOSI y sube a unos 5V, pero se ve feo (quizás porque está flotando):

sin ATtiny ampliado

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:

con resistencias

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).

1.1V y 0.8V no es solo 'un poco' bajo, es demasiado bajo. ¿Qué tensión de alimentación (medida) obtiene el ATTiny cuando se conecta al programador? ¿Qué hace RESET? ¿Cómo se ve MOSI en el USBASP cuando se desconecta del ATtiny?
He agregado más información a mi pregunta que, con suerte, debería responder a sus preguntas. gracias por mirarlo.
Tal vez MISO/MOSI necesite tener pullups aquí. Eso sería un problema en el firmware del programador, al no usar push-pull o pullups internos.
Con pull-ups en MISO y MOSI, se sientan alrededor de 4.7-5V con el ATtiny84 en su lugar. Ninguno de los dos se reduce por debajo de aproximadamente 4.7V.
Con el MOSI desplegable de 330k, solo alcanza alrededor de 1,6 V cuando está alto. Combinado con los tiempos lentos de subida y bajada, esto sugiere una resistencia en serie de ~700k. Debe haber una resistencia de valor bajo (¿270 ohmios?) (¿R5?) en la parte inferior de la placa USBASP en la línea MOSI. ¿Puedes probar esto? Si el ATtiny no responde o falta, entonces MISO estará flotando y se espera algo de diafonía.
Informaré cuando tenga un poco más de tiempo para investigar (pronto). Gracias por sus sugerencias hasta ahora.
No, MOSI y SCLK no son "flotantes", son "no terminados". Sin embargo, MISO está flotando hasta que el objetivo decide que se ha activado y debe responder, lo que está viendo en MISO es simplemente acoplar el reloj o MOSI a la entrada flotante. La señal MOSI deformada parece un problema analógico o de carga; el programador puede usar una resistencia para la conversión de nivel y se puede instalar el valor incorrecto, también parece haber un capacitor que se coló como una carga de alguna manera. realmente la lección es no comprar artículos indocumentados de fuentes dudosas .
@ChrisStratton punto justo, aunque el precio lo convierte en una prueba razonable. Resulta que lo hice funcionar unos meses más tarde al instalar el firmware de 2011 desde fischl.de/usbasp y ha estado funcionando bien desde entonces.

Respuestas (2)

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ú. Attiny85 respondiendo avrdudeComo 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 -B4es 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.

Esto realmente no responde a la situación de la pregunta en esta página, que informa que la configuración -B no tiene efecto. El reloj representado en la pregunta es bastante razonable; otra cosa es realmente. Realmente, la razón para usar relojes lentos con AVR ISP es que si el fusible de división del reloj del objetivo se programa accidentalmente, entonces el reloj del ISP debe estar por debajo del reloj del objetivo que lo muestreará .