Siento que este es un verdadero problema para principiantes, pero no veo lo que estoy haciendo mal aquí:
Tengo un interruptor SIP conectado al puerto A de un Atmega32 y no puedo leer los valores correctos del puerto. Aquí está la parte relevante del circuito diagrm:
Ahora en el código, configuro el puerto A como entrada y activo los pullups internos, sin embargo, siempre leo la palabra de datos que escribo en el puerto cuando configuro los pullups. Midiendo la tensión en los pines con un multímetro, leo los valores máximos y mínimos correctos de acuerdo con la posición de los interruptores individuales.
El resto de mi circuito funciona, comunicación SPI y todo. Todavía reproduje el problema con un ejemplo minimalista, ¿qué podría salir mal aquí?
#include <avr/io.h>
int main(void)
{
PORTA = 0xff;
DDRA = 0xff;
while(1)
{
char bla = PORTA;
}
}
No puedo descartar que dañé el puerto a través de una configuración incorrecta y el cortocircuito resultante. Entonces, ¿mi próximo paso sería cambiar el controlador?