AVR Atmega32 flash error de verificación

4

Acabo de recibir un chip Atmega32A y he intentado programarlo con un usbasp durante unas pocas horas. Puedo cambiar los fusibles y escribir el programa, pero la verificación falla.

Recibo este mensaje después de la verificación:

avrdude -c usbasp -p m32 -u -U flash:w:first.hex
  

error de verificación primero no coincide en el byte 0x0000

     

0x0c! = 0x00

Me estoy conectando de acuerdo con este diagrama aquí:

El chip se puede borrar y los fusibles se pueden cambiar, mi único problema es con la verificación. El programa parece estar escrito en la memoria, pero mis LED no parpadean.

¿Podría ser esto un problema con mis conexiones? ¿Alguien puede indicarme un mejor esquema de programación?

    
pregunta tecfreak

4 respuestas

1

¿Ha podido verificar en todo momento que el dispositivo está respondiendo a cualquier nivel? Usted dice que programó los bits del fusible, pero ¿ha podido verificar que realmente se cambiaron?

Según la hoja de datos:

The SPI Serial Programming instructions will not work if the communication is
out of synchronization. When in sync. the second byte ($53), will echo back
when issuing the third byte of the Programming Enable instruction. Whether
the echo is correct or not, all four bytes of the instruction must be
transmitted. If the $53 did not echo back, give RESET a positive pulse and
issue a new Programming Enable command.

Tal vez podría ver si puede probar esto, ya sea con una opción para / modificación de avrdude, o simplemente mirando con un alcance para ver si la línea de miso se está moviendo en absoluto?

Creo que la pregunta ha envejecido lo suficiente como para que, si aún fuera un problema, valga la pena pedir los chips antiguos de la familia atmega8 / 16/32 para probar al programador.

La literatura de la atmósfera parece implicar que el cambio está relacionado principalmente con el proceso fabuloso, por lo que es posible que el nuevo dispositivo sea más sensible al ruido en algunos aspectos.

    
respondido por el Chris Stratton
1

Si ejecuta avrdude con solo las opciones que especifican su programador y el dispositivo de destino, confirmará que puede hablar con el dispositivo correctamente.

avrdude -c usbasp -p m32

La salida que ve debe confirmar que su programador está conectado correctamente.

Lo siguiente que verificaría es tu conexión de alimentación. ¿El programador y el circuito de destino comparten la misma fuente de alimentación? Si es posible, alimente su dispositivo desde el mismo concentrador USB que alimenta a su programador. Si eso resuelve el problema, es probable que necesites aprender más sobre cómo se puede almacenar el búfer de usbasp.

Hay demasiados motivos posibles para que su problema los cubra todos, pero la clave para encontrar la solución es comenzar de manera simple y verificar sus suposiciones en cada paso. Eventualmente encontrará la solución y habrá adquirido una buena experiencia al encontrarla.

    
respondido por el Peter Bierman
1

Siento que falta información. Primero, pegue todo lo que avrdude devuelve cuando ejecuta su comando (es decir, ¿lee correctamente la firma del dispositivo?) En segundo lugar, muestre el estado de los bits de su fusible (es decir, si sincroniza el dispositivo con el cristal externo o el oscilador RC interno ?). En tercer lugar, ¿cómo alimenta el microcontrolador y cómo se alimenta USBasp?

Desde el principio, hay una cosa que podrías intentar: reducir la frecuencia del ISP. Si tiene un reloj de 4 MHz y el fusible CKDIV programado, la frecuencia ISP predeterminada (100 kHz) debería ser segura, pero intente reducirla a ~ 10 kHz agregando -B 100 a su comando. No tengo experiencia con el USBasp, si -B no cambia la frecuencia del ISP, podría intentar usar la marca -i en su lugar.

    
respondido por el Johan Sundqvist
0

Debería estar utilizando el conector oficial Atmel 2x5, que coincide con el utilizado en el USBasp.

¿Puedes programar otro dispositivo AVR?

Debería obtener un programador AVR adecuado, como AVRISP Mk II o Dragon, tendrá menos problemas. El Dragón te brinda depuración en el circuito y programación, lo cual es muy útil.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas