#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;
}