Zeitsteuerung

Dependents:   mini_02

Fork of timer0 by V09

Revision:
1:3ab9e5cd87e7
Parent:
0:8d3e2b74d1d5
Child:
2:f63678f5ed05
--- a/timer0.cpp	Sat Jan 03 15:26:23 2015 +0000
+++ b/timer0.cpp	Fri Feb 05 14:39:23 2016 +0000
@@ -10,7 +10,9 @@
     
     ms = 0;
     sec = 0;
-    
+    min = 0;
+    hours = 0;
+        
     // Initialize countdown timers
     for (i=0; i < TIMER0_NUM_COUNTDOWNTIMERS; i++)
       CountDownTimers[i].status = 0xFF;
@@ -19,13 +21,13 @@
 }
 
 //--------------------------------------------------------
-// Interruptroutine wird jede ms aufgerufen
+// Interruptroutine wird jede 1000µs aufgerufen, da das Senden von
+// einem Zeichen ca. 100µs Zeit beansprucht
+
 void timer0::func(void)
 {
     uint8_t i;
     
-    if(counter != 0) counter--;
-
     // Zeitbasis für Systemzeit
     // ----- count down timers in ms -------------------------------------------------
     for (i=0; i<TIMER0_NUM_COUNTDOWNTIMERS; i++) 
@@ -69,13 +71,35 @@
         else
         {
             sec = 0; 
-            
-            // hier folgt der Minutenzähler falls erforderlich           
+            if (min < 60) min++;
+            else
+            {
+              min = 0;
+              if (hours < 24) hours++; 
+                else hours = 0;
+            }                     
         }   
     }
     
 }
 
+
+//--------------------------------------------------------
+// Abfrage der Softwareuhr
+//
+// die Stunden, Minuten und Sekungen werden in einem Array zurückgegeben
+// die millisekunden sind separat
+
+void timer0::get_time_stamp(uint8_t *tarray,uint16_t *millis)
+{
+    *millis = ms;
+    *tarray = hours;
+    tarray++;
+    *tarray = min;
+    tarray++;
+    *tarray = sec;
+}
+
 //--------------------------------------------------------
 // Abfrage nach freiem Timer
 //