added global clock
Stefan Schuermans

Stefan Schuermans commited on 2012-05-06 11:55:04
Showing 2 changed files, with 19 additions and 4 deletions.

... ...
@@ -5,6 +5,7 @@
5 5
 
6 6
 #include <avr/io.h>
7 7
 #include <avr/interrupt.h>
8
+#include <util/atomic.h>
8 9
 
9 10
 #include "arp.h"
10 11
 #include "cf.h"
... ...
@@ -17,6 +18,9 @@
17 18
 #include "timing.h"
18 19
 #include "udp.h"
19 20
 
21
+// global timer in ms
22
+volatile unsigned long TimingMs = 0;
23
+
20 24
 // 2ms tick counter to generate 20ms ticks
21 25
 volatile unsigned char Timing2_10 = 0;
22 26
 
... ...
@@ -32,6 +36,8 @@ unsigned char Timing20_10 = 0;
32 36
 // 2ms interrupt (timer 0 compare match)
33 37
 SIGNAL(SIG_OUTPUT_COMPARE0)
34 38
 {
39
+  // advance global timer
40
+  TimingMs += 2;
35 41
   // set flag every 20ms
36 42
   Timing2_10++;
37 43
   if (Timing2_10 >= 10) {
... ...
@@ -55,10 +61,16 @@ void TimingInit(void)   // (extern)
55 61
 
56 62
   // configure timer 1 to count cycles
57 63
   TCCR1A = 0 << WGM11 | 0 << WGM10;           // normal mode
58
-  TCCR1B = 0 << WGM13 | 0 << WGM12 | 0 << CS12 | 0 << CS11 | 1 << CS10; // normal 
59
-                                                                        // mode, 
60
-                                                                        // no 
61
-                                                                        // prescaler
64
+  TCCR1B = 0 << WGM13 | 0 << WGM12 |          // normale mode
65
+           0 << CS12 | 0 << CS11 | 1 << CS10; // no prescaler
66
+}
67
+
68
+// get time in milliseconds
69
+void TimingGetMs(unsigned long *ms) // (extern)
70
+{
71
+  ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
72
+    *ms = TimingMs;
73
+  }
62 74
 }
63 75
 
64 76
 // provide curent time stamp as entropy to random number generator
... ...
@@ -9,6 +9,9 @@
9 9
 // initialize
10 10
 extern void TimingInit(void);
11 11
 
12
+// get time in milliseconds
13
+extern void TimingGetMs(unsigned long *ms);
14
+
12 15
 // provide curent time stamp as entropy to random number generator
13 16
 extern void TimingEntropy(void);
14 17
 
15 18