testTimer.ino
#include <Esplora.h>
volatile boolean ledon;
volatile unsigned long lasttime;
volatile unsigned long now;
void setup() {
ledon = true;
Esplora.writeRGB(100, 100, 100);
lasttime = millis();
// initialize Timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286; // preload timer 65536-16MHz/256/2Hz
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
interrupts(); // enable all interrupts
}
void loop() {
}
ISR(TIMER1_OVF_vect)
{
TCNT1 = 34286; // preload timer
ledon = !ledon;
if(ledon){
Esplora.writeRGB(0, 0, 1);
}else{
Esplora.writeRGB(0, 0, 0);
}
now = millis();
Serial.println(now - lasttime);
lasttime = now;
}
reference: http://blog.oscarliang.net/arduino-timer-and-interrupt-tutorial/
No comments:
Post a Comment