Atmel ATMega8 no tiene el estado "ALTO" de PB0 y PB1

0

Soy nuevo en microcontroladores y escribí un programa simple que establece el estado ALTO en PB0 y PB1.

#include <avr/io.h>
#include <util/delay.h>

#define F_CPU 8000000L

int main(void){
    DDRB |= (1<<PB0) | (1<<PB1);
    PORTB |= (1<<PB1);
    PORTB |= (1<<PB0);

    while(1){}
}

El problema es que mi avr no puede mantener el estado ALTO y los leds conectados están parpadeando. ¿Dónde está el problema?

    
pregunta mattsky

1 respuesta

1

¿Qué ATmega exactamente? ¿Cuál es su configuración de fusible?

Puede intentar llamar a wdt_disable() al principio (se define en <avr/wdt.h> ), ya que el watchdog se puede habilitar, por ejemplo, mediante un firmware anterior (el watchdog no se desactiva después de un reinicio) o se puede habilitar siempre en restablecer.

También hay una configuración de fusible que no permite la desactivación del perro guardián: debes llamar a wdt_reset() en algún lugar del bucle principal.

    
respondido por el filo

Lea otras preguntas en las etiquetas