4 votos

Error de verificación de la flash del AVR Atmega32

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

Estoy recibiendo este mensaje después de la verificación:

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

error de verificación primer desajuste en el byte 0x0000

0x0c != 0x00

Estoy conectando según este diagrama aquí: schematic

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 LEDs no parpadean.

¿Podría ser un problema con mis conexiones? ¿Puede alguien indicarme un esquema de programación mejor?

0 votos

Me gustaría ver dos cosas. La confirmación de un programador que funcione para este chip y una explicación de cómo sabes que está conectado correctamente y cómo ir a diseñar uno. Esto va a recibir una recompensa cuando llegue a la edad en que pueda añadir uno.

0 votos

¿Has comprobado la configuración del bit de bloqueo? Los bits de bloqueo se pueden configurar para desactivar la escritura y la verificación de la flash.

0 votos

¿Puede publicar la configuración actual de los fusibles?

1voto

Andrew Walker Puntos 9038

¿Ha podido verificar en absoluto que el dispositivo responda a algún nivel? Dices que has programado los bits de los fusibles, pero ¿has podido verificar que realmente se han cambiado?

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 usted podría ver si usted puede probar esto, ya sea con una opción a / modificación de avrdude, o incluso sólo mirando con un alcance para ver si la línea de miso se menea en absoluto?

Yo pensaría que la cuestión ha envejecido lo suficiente como para que, si sigue siendo un problema, valga la pena pedir algún chip antiguo de la familia atmega8/16/32 para probar el programador.

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

0 votos

Gracias por su respuesta. El problema fue probablemente con mi protoboard y el cable FRC. El programador y el chip son nuevos y funcionan perfectamente ahora.

1voto

theTuxRacer Puntos 223

Si ejecuta avrdude sólo con 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 vea debería confirmar que su programador está conectado correctamente.

Lo siguiente que yo comprobaría es la conexión eléctrica. ¿El programador y el circuito de destino comparten la misma fuente de alimentación? Si es posible, alimenta tu dispositivo desde el mismo concentrador USB que alimenta tu programador. Si eso resuelve el problema, entonces probablemente tendrá que aprender más acerca de cómo el usbasp puede ser amortiguado.

Hay demasiadas razones posibles para tu problema como para abarcarlas todas, pero la clave para encontrar la solución es empezar de forma sencilla y comprobar tus suposiciones a cada paso. Al final encontrarás la solución, y habrás adquirido una buena experiencia al encontrarla.

0 votos

Estoy eligiendo tu respuesta ya que al verificar que el programador funcionaba el problema se habría reducido a las conexiones entre el programador y el chip.

1voto

Andrew Myhre Puntos 851

Creo que falta alguna información. En primer lugar, por favor, pega todo lo que avrdude devuelve cuando ejecutas tu comando (es decir, ¿lee la firma del dispositivo correctamente?) En segundo lugar, muéstranos el estado de los bits de tu fusible (es decir, ¿relocalizas el dispositivo por el cristal externo o por el RC osc interno?) Tercero, ¿cómo alimentas el microcontrolador y cómo se alimenta el USBasp?

Sin embargo, hay una cosa que podrías probar: bajar la frecuencia del ISP. Si tienes un reloj de 4MHz y el fusible CKDIV programado, la frecuencia ISP por defecto (100 kHz) debería ser segura, pero intenta bajarla a ~10 kHz añadiendo -B 100 a su mando. No tengo experiencia con el USBasp, si -B no cambia la frecuencia del ISP podrías intentar usar el -i bandera en su lugar.

0 votos

Su primer párrafo debe formar un comentario, no una respuesta.

0voto

Mark Biek Puntos 41769

Deberías utilizar el conector 2x5 oficial de Atmel, que coincide con el utilizado en el USBasp.

¿Puedes programar otro dispositivo AVR?

Deberías conseguir un programador AVR adecuado como el AVRISP Mk II o el Dragon, tendrás menos problemas. El Dragon te da la depuración en el circuito, así como la programación, que es muy útil.

0 votos

Entonces, ¿crees que lo más probable es que se deba al programador? No tengo otro dispositivo para probar. Espero que no sea el chip el que funcione mal. ¿Es el diagrama del circuito anterior correcto para la programación? También ¿cuál es la función del pin RESET durante la programación?

0 votos

Por favor, responda, ¿qué debo hacer?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X