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

void init_btn()
{
    // Set pin 2 as input
    DDRD &= ~(1 << PD2);
    // Set pin 2 as pullup
    PORTD |= (1 << PD2);
    // when to trigger interrupt
    // none = on low, 0 = on change, 1 = on down, 1 & 0 = on up, 
    EICRA |= (1 << ISC01);
    // enable interrupts for int0
    EIMSK |= (1 << INT0);
    // enable global interrupts
    sei();
}

// Interrupt service routine (ISR) for INT0
ISR(INT0_vect)
{
    // Flip pin state
    PORTB ^= (1 << PB5);
}

int main()
{
    // onboard led pin > output
    DDRB |= (1 << PB5);

    // init button
    init_btn();

    // loop forever
    while (1);
    return 0;
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r