Escribí este programa simple:
#include <avr/io.h>
int main(void) {
DDRA = 0xff;
PORTA = 0xff;
while(1) {
}
}
Cuando lo programo para mi nuevo ATmega16A-PU, avrdude me dice que todo está bien. Pero cuando conecto un LED al puerto A, nunca se habilita.
Para compilar el programa y colocarlo en la ATmega, utilizo los siguientes comandos:
avr-gcc -mmcu=atmega16 -c -o test.o test.c
avr-gcc -mmcu=atmega16 -o test.elf test.o
avrdude -p m16 -c avrispv2 -P usb -U flash:w:test.elf
Los siguientes pines del microcontrolador están conectados:
40 PA0 ---------> 220 Ω --> green LED --> GND
06 PB5 (MOSI) --> MOSI of the programmer
07 PB6 (MISO) --> MISO of the programmer
08 PB7 (SCK) ---> SCK of the programmer
09 RESET -------> RESET of the programmer
10 VCC ---------> VCC of the programmer
11 GND ---------> GND of the programmer
Cuando conecto el extremo izquierdo de la resistencia de 220 directamente a VCC, el LED se ilumina, por lo que el LED está bien. El microcontrolador es completamente nuevo y ya probé con otro (también nuevo), así que creo que también están bien.
EDITAR: los fusibles están configurados en 0b10011001 (alto) y 0b11100001 (bajo).
¿Alguna idea de por qué el microcontrolador no configura el puerto PA0 en VCC?