Cada vez que intento poner un puerto determinado en alto, luego esperar algún tiempo, luego poner algún otro puerto en alto, obtengo un problema en el que sólo se establece el último valor. El código que importo a través de USBASP y avrdude es:
#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int main(void)
{
DDRD = 0b11111111;
PORTD = 0b11111110;
_delay_ms(1000);
PORTD = 0b11111101;
while(1)
{
;
}
}
Y eso solo pone todos los pines en PORTD a alto excepto PD0, ignorando la segunda instrucción. Además, si reemplazo ese trozo de código con algo como esto:
_delay_ms(1000);
DDRD = 0b11111111;
PORTD = 0b11111110;
Enciende todos los pines del puerto con un retardo de un segundo. Estoy usando un ATmega8A y también completamente perdido.