¿Por qué mi ATtiny13 reporta una identificación de dispositivo incorrecta?

6

Estoy usando un Arduino (con ATmega168) como programador de ISP para programar ATtiny13. Cuando intento hacer esto, avrdude informes:

avrdude: Device signature = 0x1e9406
avrdude: Expected signature for ATtiny13 is 1E 90 07

El indicador -F para forzar la programación no anula la ID en este caso.

Sé que puedo restablecer la ID con un programador de alto voltaje, pero ¿por qué el dispositivo está reportando erróneamente su ID en primer lugar? ¿Y por qué es un problema intermitente? De vez en cuando, el programador funciona bien, pero cuando no lo hace, siempre muestra la misma ID errática.

Salida avrdude completa:

avrdude: Version 5.11.1, compiled on Oct 30 2011 at 10:37:28
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/etc/avrdude.conf"
         User configuration file is "/home/jhendrix/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB003
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATtiny13
         Chip Erase delay              : 4000 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : dedicated
         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     5     4    0 no         64    4      0  4000  4000 0xff 0xff
           flash         65     6    32    0 yes      1024   32     32  4500  4500 0xff 0xff
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.16
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9406
avrdude: Expected signature for ATtiny13 is 1E 90 07
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.
    
pregunta jippie

1 respuesta

4

No es un error muy probable, y la consistencia de esta ID "incorrecta" puede ser reveladora. Las malas conexiones pueden causar algunos fallos, pero generalmente en forma de bits de retraso (es decir, que muestran los valores de los bits vecinos), y 94 vs 90 no se ve así. Además, una búsqueda rápida en la lista de AVRude de ID de AVR muestra que la ID que se obtiene es la de un ATmega168, común en Arduino. Además, el gestor de arranque Arduino habla el protocolo STK500, que está utilizando aquí, por lo que la pregunta obvia es: ¿cuál es su programador?

Supongo que es posible que tenga algo así como un Arduino configurado como programador para programar otros AVR, y cuando se reinicie (y por lo tanto aún en el cargador de arranque, que tiene un tiempo de espera antes de iniciar el programa cargado / " boceto ") a medida que se inicia avrdude, puede reprogramar ese AVR en lugar de la siguiente tabla.

Mi segunda suposición, que sería la primera sin las notas anteriores sobre el comportamiento de Arduino, sería hablar sin intención con otro programador; Esto puede verse afectado por cosas simples como el orden en que se conectan al USB.

En cualquiera de los escenarios, no es en realidad una ID incorrecta, sino otro AVR que el que se pretende responder. Para el caso de Arduino como programador, las cosas pueden complicarse con el reinicio automático cuando inicia un programa para hablar con la placa; Trabajar alrededor podría ser un poco más complejo, y mi primera suposición sería algo así como (sleep 3 ; avrdude -P /dev/ttyUSB0 -c stk500 -p t13 -U ... ) < /dev/ttyUSB0 , lo que aseguraría un retraso entre la apertura del puerto serie y la ejecución de avrdude.

    
respondido por el Yann Vernier

Lea otras preguntas en las etiquetas