diff --git a/buttons/main.c b/buttons/main.c index 859f996..cfe75cd 100644 --- a/buttons/main.c +++ b/buttons/main.c @@ -1,21 +1,36 @@ +/* + * Control PB5 with the two buttons. One button disables, the other enables. + * The board uses interrupts for this. + */ #define F_CPU 16000000UL #define __AVR_ATmega328P__ +#include #include -int main(void) { - DDRB = 0xff; - DDRD = 0; +// code for INT0 +ISR(INT0_vect) { PORTB |= (1 << PORTB5); } - PORTD |= (1 << PORTD2) | (1 << PORTD3); +// code for INT1 +ISR(INT1_vect) { PORTB &= ~(1 << PORTB5); } + +int main(void) { + DDRB = 0xff; // write to B + DDRD = 0; // read from D + + PORTD |= (1 << PORTD2) | (1 << PORTD3); // pull up D2 and D3 PORTB = 0; + // enable external interruprs + EIMSK |= (1 << INT0); + EIMSK |= (1 << INT1); + + // trigger when anything changes + EICRA |= (1 << ISC00); // for INT0 + EICRA |= (1 << ISC10); // for INT1 + + sei(); // interrupt magic macro while (1) { - if (!(PIND & (1 << PIND2))) { - PORTB |= (1 << PORTB5); - } - if (!(PIND & (1 << PIND3))) { - PORTB &= ~(1 << PORTB5); - } + // do nothing } }