Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. bool isrEnable = false;
  2. unsigned long int t;
  3. unsigned long int prevTime;
  4. char oldSREG;
  5.  
  6. void setup ()
  7. {
  8. Serial.begin(9600);
  9. oldSREG = SREG; // save state register
  10. cli(); // disable interrupts
  11.  
  12.  
  13. TCCR1A = 0;
  14. TCCR1B = 0;
  15. TCNT1 = 0; // Reset counter value
  16.  
  17. OCR1A = 15625; // toggle after counting to 16,000,000/1024 = 15625
  18. TIMSK1 |= (1 << OCIE1A); // Output Compare A Match Interrupt Enable
  19. TCCR1B |= (1 << WGM12); // CTC mode
  20. TCCR1B |= (1 << CS12) | (1 << CS10); // pre-scaler: 1024
  21.  
  22.  
  23. sei(); // enable interrupts
  24. SREG = oldSREG; // restore state register
  25. }
  26.  
  27. ISR(TIMER1_COMPA_vect) // interrupt service routine that wraps a user defined function supplied by attachInterrupt
  28. {
  29. isrEnable = true;
  30. }
  31.  
  32. void loop () {
  33. t = millis();
  34. if(isrEnable) {
  35. printTime();
  36. isrEnable = false;
  37. }
  38. }
  39.  
  40. void printTime(void) { // diagnostics
  41. Serial.print(t); // current time
  42. Serial.print("\t"); // print tab
  43. Serial.println((float)(t - prevTime) / 1000.0, 4);
  44. prevTime = t;} // previous time
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement