Yet another Arduino blinky project. This version of “blinky” example is using Timer1 Overflow interrupt to make an onboard LED blink for roughly one second. The code is on Github, click here.
Parts Required
- Arduino board (i.e. Arduino/Genuino UNO)
Software
This code is written in C++ and can be compiled using an Arduino IDE. All information about how to compile this project is here.
/** * Copyright (c) 2019, Łukasz Marcin Podkalicki <lpodkalicki@gmail.com> * Arduino/002 * Blinky with Timer1 OVF. */ #define LED_PIN (13) #define TIMER_TCNT (57723) // 65536 - 16MHz/1024/2 void setup() { pinMode(LED_PIN, OUTPUT); // set LED pin as output TCCR1A = 0; // clear register TCCR1B = _BV(CS12)|_BV(CS10); // set Timer1 prescaler to 1024 TIMSK1 |= _BV(TOIE1); // enable Timer1 overflow interrupt TCNT1 = TIMER_TCNT; // reload timer counter interrupts(); // enable global interrupts } void loop() { // do nothing } ISR(TIMER1_OVF_vect) { TCNT1 = TIMER_TCNT; // reload timer counter digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Toggle LED pin }