#include <util/delay.h>
#define LED_PIN PORTD3
#define INT0_PIN PORTD2
#define NO_ARDUINO_LAYER // comment this line to run with the Arduino layer
# ifdef NO_ARDUINO_LAYER
int main() {
setup();
while (1) {
loop();
}
return 0;
}
#endif
void setup() {
EICRA = 0; // clear register
bitSet(EICRA, ISC01); // The falling edge of INT0 generates an interrupt request.
EIMSK = 0; // clear register
bitSet(EIMSK, INT0); // enable External Interrupt Request 0
bitSet(DDRD, LED_PIN); // set pin as output
bitSet(PORTD, INT0_PIN); // enable pin pull-up
bitSet(PORTB, 5); // flash L to indicate setup() is running.
_delay_ms(1000);
bitClear(PORTB,5);
interrupts(); // enable interrupts
}
void loop() {
if bit_is_set(EIFR, INTF0) { // check falling edge at INT0_PIN
bitSet(EIFR, INTF0) ; // clear INTF0 flag
bitToggle(PORTD, LED_PIN); // toggle LED level
}
}