-#include <stdint.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <avr/interrupt.h>
-#include <avr/io.h>
-#include <avr/sfr_defs.h>
-
-#include "clock.h"
-
-//Counted time
-volatile clock_time_t clock_datetime = 0;
-
-//Overflow interrupt
-ISR(TIMER1_COMPA_vect)
+#include <stdint.h>\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <avr/interrupt.h>\r
+#include <avr/io.h>\r
+#include <avr/sfr_defs.h>\r
+\r
+#include "clock.h"\r
+\r
+//Counted time\r
+volatile clock_time_t clock_datetime = 0;\r
+\r
+//Overflow interrupt\r
+ISR(TIMER1_COMPA_vect)\r
{\r
- clock_datetime += 1;
-}
-
-//Initialise the clock
+ clock_datetime += 1;\r
+}\r
+\r
+//Initialise the clock\r
void clock_init()\r
{\r
- OCR1A = ((F_CPU / 1024) / 100);
- TCCR1B = ((1 << WGM12) | (1 << CS12) | (1 << CS10));
- TIMSK1 = (1 << OCIE1A);
-}
-
-//Return time
+ OCR1A = ((F_CPU / 1024) / 100);\r
+ TCCR1B = ((1 << WGM12) | (1 << CS12) | (1 << CS10));\r
+ TIMSK1 = (1 << OCIE1A);\r
+}\r
+\r
+//Return time\r
clock_time_t clock_time()\r
{\r
- clock_time_t time;
-
- cli();
- time = clock_datetime;
- sei();
-
- return time;
-}
+ clock_time_t time;\r
+\r
+ ATOMIC_BLOCK(ATOMIC_FORCEON)\r
+ {\r
+ time = clock_datetime;\r
+ }\r
+\r
+ return time;\r
+}\r