Entonces, aparentemente este es un error común, que muchas personas han corregido de muchas maneras diferentes, ninguna de las cuales me ha funcionado.
Tengo dos Arduinos diferentes: un NG y un Uno, con un Atmega168 y 328 respectivamente. Ambos tienen el cargador de arranque grabado en ellos. Estoy buscando quemar el cargador de arranque Arduino en otros 2 chips Atmega328 que compré (de Digikey).
Por lo tanto, configuro las conexiones como se indica en en el sitio de Arduino , usando los 168 NG para programar el nuevo 328 que puse en el uno. No funciona, y ejecutar avrdude -C "path\to\avrdude.conf" -p atmega328p -b19200 -P COM5 -c avrisp -v -v -v
devuelve
avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "I:\Users\Collin\Documents\Arduino IDE\hardware\tools\avr
\etc\avrdude.conf"
Using Port : COM5
Using Programmer : avrisp
Overriding Baud Rate : 19200
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
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
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 4500 4500 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 4500 4500 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 4500 4500 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 4500 4500 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
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
Programmer Type : STK500
Description : Atmel AVR ISP
Hardware Version: 2
Firmware Version: 1.16
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Aquí está todo lo que he hecho. Cada paso dio como resultado el mismo error al ejecutar el comando mencionado anteriormente.
- Pensando que tal vez era un problema la programación usando el NG o el 168, reorganizo las cosas para que esté usando el Uno con un 328 para programar un 328 en el NG.
- A continuación, intento todas las permutaciones de la placa y el chip.
- Pensando que tal vez había bloqueado un chip con todos los cambios, probé una (nueva) 328 diferente.
- Pensando que tal vez los dos habían llegado a DOA, lo intenté con mi chip 168 bien conocido.
- Lo intenté con la nave 328 en buen estado.
- Pensando que solo había perdido una hora cuando uno de los cables que estaba usando era intermitente, pero todos se probaron bien, y cambiarlos con otros no hizo ninguna diferencia.
- Pensando que tal vez había algo mal en uno de mis tableros, dejé caer un 328 nuevo en una placa de pruebas y lo configuré según las instrucciones, usando Uno + 328 para programar.
- Intentó lo mismo con el NG y 168 como ISP.
- Probamos diferentes configuraciones del programador (
-c arduino
,avrisp
,stk500
) - Probamos varias configuraciones de
-B ###
con avrdude - Probé muchos de los anteriores en una Mac y una PC
- Se intentó con una fuente externa de 5V
- Intenté horquilla de ArduinoISP de Adafruit
- Se intentó cargar el optiloader en cualquiera de las tarjetas: se obtuvo un error no descriptivo
0x0
- Al programar con el Uno, colocó el pin de restablecimiento alto (165 ohmios)
- Al programar con el Uno, conectó un condensador de 100uF entre la conexión a tierra y el restablecimiento
Sé que al menos se está haciendo una conexión entre los dos chips ya que, al programar con el Uno contra el NG, si no sostengo el pin Digital 10 / Reset al pin 1 del chip objetivo, obtengo un error stk500_disable(): protocol error, expect=0x14, resp=0x51
Y sí, al final de esto, ambos chips originales todavía funcionan bien, así que no creo que los haya arruinado a pesar de todo esto.
Aquí hay una foto de una de mis configuraciones: sí, el cable amarillo es para restablecer, no 3v3. Se supone que la placa NG inferior está programando el chip en el Uno superior.