Cada vez que trato de establecer un puerto determinado en alto, luego esperar un poco, luego configurar otro puerto en alto, aparece un problema en el que solo se establecería 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 establece todos los pines en PORTD en alto, excepto PD0, ignorando la segunda instrucción. Además, si sustituyo esa pieza de código con algo como esto:
_delay_ms(1000);
DDRD = 0b11111111;
PORTD = 0b11111110;
Enciende todos los pines en el puerto con un retraso de un segundo. Estoy usando un ATmega8A y también completamente perdido.