El programa del LED parpadeante del AVR básico no funciona

0

Así que he comenzado con proyectos usando microcontroladores AVR. Hace unos meses, obtuve uno de estos simplemente para encender un LED, pero accidentalmente cociné ese con una fuente de alimentación defectuosa. Ahora tengo algunos nuevos y creo que estoy haciendo lo mismo antes, ¡pero el LED no parpadea!

Este es mi código actual:

#define F_CPU 20000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void){

    DDRB |= 1<<PB0;
    while(1){
        PORTB &= -(1<<PB0);
        _delay_ms(1000);
        PORTB |= 1<<PB0;
        _delay_ms(1000);
    }
    return 0;
}

Puedo programar el dispositivo con éxito, pero cuando lo pruebo, no pasa nada. El dispositivo es un ATmega168A. Estas son mis conexiones de pin actuales:

Pin 1 (Restablecer): 5V

Pin 7 (Vcc): 5V

Pin 8 (GND): GND

Pin 14 (B0): LED OUT

Pin 20 (AVCC): 5V

Pin 22 (GND): GND

¿Hay algo obvio que solo falto?

    
pregunta Kyle Cerniglia

1 respuesta

4

PORTB &= -(1<<PB0); debería ser PORTB &= ~(1<<PB0); .

~(1<<PB0) es 0xFE , que desactiva el bit 0. -(1<<PB0) es 0xFF , que funciona como un no-op, por lo que el pin nunca se apaga.

    
respondido por el microtherion

Lea otras preguntas en las etiquetas