Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool isrEnable = false;
- unsigned long int t;
- unsigned long int prevTime;
- char oldSREG;
- void setup ()
- {
- Serial.begin(9600);
- oldSREG = SREG; // save state register
- cli(); // disable interrupts
- TCCR1A = 0;
- TCCR1B = 0;
- TCNT1 = 0; // Reset counter value
- OCR1A = 15625; // toggle after counting to 16,000,000/1024 = 15625
- TIMSK1 |= (1 << OCIE1A); // Output Compare A Match Interrupt Enable
- TCCR1B |= (1 << WGM12); // CTC mode
- TCCR1B |= (1 << CS12) | (1 << CS10); // pre-scaler: 1024
- sei(); // enable interrupts
- SREG = oldSREG; // restore state register
- }
- ISR(TIMER1_COMPA_vect) // interrupt service routine that wraps a user defined function supplied by attachInterrupt
- {
- isrEnable = true;
- }
- void loop () {
- t = millis();
- if(isrEnable) {
- printTime();
- isrEnable = false;
- }
- }
- void printTime(void) { // diagnostics
- Serial.print(t); // current time
- Serial.print("\t"); // print tab
- Serial.println((float)(t - prevTime) / 1000.0, 4);
- prevTime = t;} // previous time
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement