atmega32 funciona bien, ¡pero atmega32A NO!

-1

Tengo un tablero en el que hay una pantalla LCD y quiero mostrar algunas líneas en la pantalla. Tengo un Atmega32 de pin roto que los pines rotos no usaban para LCD , he escrito un código simple que solo muestra un texto en la pantalla LCD.

Ya que mi Atmega32 está roto y los pines rotos son necesarios para otra parte del circuito, tuve que comprar un Atmega32 nuevo, pero todo lo que encontré es Atmega32A.

Dado que técnicamente se puede usar Atmega32A en lugar de Atmega32 ordinario, he compilado y quemado el mismo código que he escrito para Atmega32 en el Atmega32A recién comprado. Pero la pantalla LCD ya no funciona y también tuve un código de muestra que hace girar un motor paso a paso en sentido horario y antihorario, cada uno con un retardo de 1000 ms . Pero tomó casi 5000 ms en Atmega32A para cambiar la dirección de rotación.

¡Realmente no sé qué está pasando!

¿Puede alguien ayudarme en esto?

  

aquí es una pregunta sobre el mismo problema que tengo pero la respuesta aceptada no contiene ningún detalle útil sobre cómo resolver el problema (o al menos no lo entiendo).

Más detalles

LaimagendearribaeslapantallaLCDenunAtmega32ordinario. La imagen de arriba es la pantalla LCD con el mismo código en un Atmega32A (sin salida)

Los códigos para compilar y quemar los códigos:

#!/bin/bash
avr-gcc -mmcu=atmega32 lcd-sample-main.c -o .makefiles/lcd-sample-main  -O1 && \
avr-objcopy -O ihex .makefiles/lcd-sample-main .makefiles/lcd-sample-main.hex && \
sudo avrdude -c usbasp -p m32 -U flash:w:.makefiles/lcd-sample-main.hex
    
pregunta dariush

1 respuesta

2

El problema fue con la configuración de los bits de fusible en el nuevo controlador '32A.
Gracias a Ignacio por dar la idea, leí los bytes del fusible actual del '32 y luego los escribí en el '32A y todo está funcionando ahora.

Para leer los bits de fusible:

sudo avrdude -c usbasp -p m32 -U lfuse:r:-:h -U hfuse:r:-:h

Y para escribirlos (estos son los valores que he leído del '32 para lfuse y hfuse )

sudo avrdude -c usbasp -p m32 -U lfuse:w:0xf4:m -U hfuse:w:0xdf:m

¡Hecho!

    
respondido por el dariush

Lea otras preguntas en las etiquetas