Uso de un programador AVR para programar la versión TQFP de ATMEGA328P [cerrado]

Estoy intentando cargar el cargador de arranque Arduino y un programa en un ATMEGA328P-AU con un programador AVR . He hecho esto antes de usar la placa Arduino UNO y la versión DIP de 28 pines del ATMEGA328P, sin embargo, tengo problemas al usar la versión TQFP.

Usando un zócalo adaptador TQFP , simplemente usé puentes y una placa de prueba para conectar los pines necesarios al programador AVR. Para mayor comodidad, proporcioné los esquemas tanto del conector del programador AVR como del IC:

Esquema del programador AVR

ATMEGA328P-AU Pines

Simplemente conecté el programador AVR al chip en el zócalo del adaptador de la siguiente manera (conector AVR a la izquierda, chip a la derecha)

1 (MOSI) - Patilla 15

2 (VCC) - Pines 4, 6, 18

5 (RST) - Patilla 29

6 (GND) - Pines 3, 5, 21

7 (SCK) - Patilla 17

9 (MISO) - Patilla 16

Sin embargo, cuando intento cargar el gestor de arranque en el chip, aparece el siguiente error:

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : usb
         Using Programmer              : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\\.\libusb0-0001--0x1781-0x0c9f
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         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    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           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
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : USBtiny
         Description     : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
avrdude: programmer operation not supported

avrdude: Using SCK period of 10 usec
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Error while burning bootloader.

Claramente estoy haciendo algo mal, y no lo dudaría porque no es tan simple como conectar el programador AVR directamente al chip para programarlo.

Cualquier ayuda sería apreciada.

Gracias.

¿Hay una resistencia pullup en SPI CS? Cuando hice esto el año pasado, me encontré con un problema en el que CS no estaba controlado durante el reinicio y un dispositivo esclavo SPI conectado interfería con el proceso de carga del firmware ICD.
¿Puede editar la pregunta para incluir los argumentos exactos de la línea de comandos dados a avrdude? Parece que el texto del registro dice "no se admite la operación del programador", lo que podría ser un síntoma de argumentos de línea de cmd incorrectos.
¿Ha aplicado energía al circuito? El programador AVR no suministrará energía.
@TomCarpenter, el programador proporciona energía. Hay un interruptor en el USBtiny para activar/desactivar la alimentación. Sin embargo, vale la pena verificar que esté en la posición correcta.
¿Puede verificar TQFP con Arduino UNO como programador y publicar los resultados? Durante mucho tiempo he estado usando arduino Uno como programador para mis chips tqfp. Programé cientos de ellos sin ningún problema. Verifique estos posibles errores: (1) Condensador en la línea de reinicio (2) Niveles de voltaje
He usado varios programadores AVR diferentes sin problemas. Verifique que tenga suficiente resistencia pullup a 5 V para reiniciar y asegúrese de tener capacitores de derivación de 5 V en su suministro TQFP, cerca del chip. Recomendaría al menos 1 uF. Como referencia, puede consultar el esquema de Arduino Nano, que muestra el cableado ICSP: arduino.cc/en/uploads/Main/ArduinoNano30Schematic.pdf .... Los uso como componentes y uso la programación Arduino e ICSP ... nunca tuve un problema.
¿Conectó los tres pines de tierra, ambos pines Vcc y AVcc?
Voto para cerrar esta pregunta como fuera de tema porque ha sido abandonada durante medio año en un estado sin respuesta.

Respuestas (2)

Bueno, antes que nada, revisa el cableado. Verifique que el encabezado del ISP se conecte a los pines que debería, y verifique que tenga el chip orientado correctamente en el zócalo. El USBtiny tiene un interruptor para alimentar el objetivo, así que asegúrese de que esté en la posición correcta. Si todo eso es correcto, hay un par de otras cosas que podrían causar ese error:

  1. El pin de reinicio carece de la protección ESD normal, por lo que es bastante fácil de freír. Conéctese a tierra y use un tapete ESD.

  2. Si alguna vez logró programar los fusibles, es posible que el pin de reinicio se haya desactivado o que el dispositivo esté esperando un cristal externo. Si el pin de reinicio se ha desactivado, necesitará un programador especial de alto voltaje (12 V) para recuperarlo.

El requisito de Crystal surge cuando se inicia a través del cargador de arranque, es decir, cuando intenta programar a través de UART. Al programar a través de SPI, el chip acepta el programa incluso si los fusibles están configurados para aceptar la señal de reloj de un reloj externo.
No: el ISP requiere una fuente de reloj que funcione. Solo la programación HV no lo hace.

Suponiendo que su conexión es incorrecta, primero debe agregar una resistencia pull-up al pin de reinicio; 1k-10k debería estar bien. segundo, es posible que deba configurar el fusible a una velocidad más alta antes de poder cargar el código en el chip. Eso es prácticamente todo lo que necesitas.

No. El reinicio lo maneja el programador, y además tiene un pullup interno.