#define LED_PIN 8
#define UL unsigned long
UL prev = millis();
volatile int count = 100;
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
ovfSetup();
}
void loop() {
if(!count) {
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 T2 OVF: " + String(now - prev) + "ms" + "\n");
prev = now;
count = 100;
}
}
void ovfSetup() {
TCCR2A = 0; // Init Timer2A
TCCR2B = 0; // Init Timer2B
TCCR2B |= B00000111; // Prescaler = 1024
TCNT2 = 99; // Timer Preloading
TIMSK2 |= B00000001; // Enable Timer Overflow Interrupt
}
ISR(TIMER2_OVF_vect) {
TCNT2 = 99;
count--;
}