Estoy usando un Arduino UNO para programar una imagen hexadecimal precompilada en un ATTINY45, usando avrdude en el directorio Arduino IDE, en Windows 7. El Uno tiene el boceto ISP cargado desde el directorio de ejemplos y eso funciona: el LED del latido del corazón pulsa muy bien
En el lado del hardware tengo esta configuración , excepto que el ATTINY está montado en la superficie, soldado a una tabla de surf con todos sus pines verificados y soldados con un voltímetro. Utilizo una tira de pin de encabezado, sostenida con la mano para que los pines toquen la tabla de surf, para obtener las señales del Uno al ATTINY.
Aquí están las líneas de comando, que tomé al mirar la salida de depuración del IDE:
REM set the fuse for 8MHz, so the ISP programmer can work
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m
REM load the program
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -Uflash:w:firefly.hex:i
REM set fuse for 1MHz, as the project requires
C:\Progra~1\Arduino\hardware/tools/avr/bin/avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0x62:m
Intento ejecutarlos por separado, pero siempre obtengo este error:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
pero a veces el número es ff0000 o ffff00 o ffffff
Leí que "Arduino usa una versión ligeramente modificada de avrdude para cargar bocetos en la placa Arduino. La versión estándar consulta la firma del dispositivo de la placa de una manera que el gestor de arranque no entiende, lo que da como resultado este error". ¿Esto significa que usar el Arduino avrdude con un nuevo chip ATTINY, sin cargador de arranque, también causaría el mismo error? En otras palabras, ¿el avrdude modificado es incapaz de consultar un chip AVR no cargado con Arduino?
¿O ese error simplemente significa que no tengo un buen contacto entre todos mis pines del programador y ATTINY?
Y, ¿son realmente necesarios los ajustes de fusibles? ¿Puede Uno programar el flash en un funcionamiento attiny a 1MHz y así ahorrarme algunos pasos?
(Simplemente compraría un programador "real", pero necesito obtener este código en los próximos dos días, y estoy en una zona rural de Nueva Escocia)
fuente
-c avrisp
. Creo que puedes programarlo a 1 MHz sin problemas.-carduino
el stk500. Simplemente intente cargar el programa de parpadeo a la atención desde el IDE. De esa manera puede ver la línea de comandos correcta en la parte inferior, si habilita "salida detallada" en la configuración.Respuestas:
Solde los cables a las almohadillas para asegurarme de que la conexión sea buena, y usé esos cables para programar desde el Uno. Luego, el programador trabajó, sin modificaciones en las líneas de comando como se publicó en la pregunta. Ejecuté algunas variaciones y pude responder a todas mis preguntas, y algunas más además:
El error "Firma de dispositivo no válido de Yikes!" Fue causado por un contacto deficiente entre el programador (Uno) y los pines ATTINY.
No tenía nada que ver con que el gestor de arranque no estuviera en el nuevo microcontrolador. El nuevo chip ATTINY45 no necesita un gestor de arranque para que funcione el programador en circuito.
El Uno puede programar el ATTINY45 configurado para cualquiera de sus velocidades, 1MHz u 8MHz. La configuración de fábrica está bien y no requiere cambiar los fusibles.
Ambas versiones de avrdude funcionaron para la programación: la 6.1 del sitio del autor y la modificada del IDE de Arduino.
avrdude programa puede a través de la Uno usando cualquiera de
-c avrisp
,-c arduino
o-c stk500v1
, no importa cuál.Una pequeña pregunta que no pude responder fue a qué velocidad programa Uno (velocidad de comunicación entre los pines de E / S Arduino y el microcontrolador que se está flasheando). ¿Está relacionado con la velocidad del puerto serie? Pero resultó no ser pertinente para responder a este problema. Alguien más puede preguntar si tiene curiosidad.
fuente
Tuve exactamente este problema. Si el ATtiny está configurado para reloj externo, entonces el ArduinoISP no podrá programarlo sin un cristal externo. Conecté un cristal de 16 MHz y 2 condensadores y funcionó perfectamente.
(Luego pude configurar ATtiny en el reloj interno, eliminar el cristal y luego funcionó perfectamente sin el cristal).
fuente
Agregue el tablero y su descripción de fusible de lo que ya está configurado y funcionará.
Para agregar solo
C:\Program Files\Arduino\hardware\arduino\avr\boards.txt
y agregar la descripción del tablero.Lo usé.
fuente