#define LED_PIN 8
#define UL unsigned long

UL prev = millis();

volatile bool inter = false;

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
  compSetup();
}

void loop() {
  if(inter) {
    UL now = millis();
    digitalWrite(LED_PIN, !digitalRead(LED_PIN));
    String status = digitalRead(LED_PIN) ? "ON" : "OFF";
    Serial.println("LED " + status);
    Serial.println("TIME SINCE LAST T1 COMP A: " + String(now - prev) + "ms" + "\n");
    prev = now;
    inter = false;
  }
}

void compSetup() {
  TCCR1A = 0;           // Init Timer1A
  TCCR1B = 0;           // Init Timer1B
  TCCR1B |= B00000100;  // Prescaler = 256
  OCR1A = 31250;        // Timer Compare1A Register
  TIMSK1 |= B00000010;  // Enable Timer COMPA Interrupt
}

ISR(TIMER1_COMPA_vect){
  OCR1A += 31250; // Advance The COMPA Register
  inter = true;
}