ASURO Library  2.80
Funktionen
time.c-Dateireferenz

Zeit- und Delay Funktionen. Mehr ...

#include "asuro.h"
Include-Abhängigkeitsdiagramm für time.c:

gehe zum Quellcode dieser Datei

Funktionen

unsigned long Gettime (void)
 Gibt die aktuelle Zeit in ms zurueck.
 
void Sleep (unsigned char time36kHz)
 Wartefunktion.
 
void Msleep (unsigned int ms)
 Wartefunktion in ms.
 

Ausführliche Beschreibung

Zeit- und Delay Funktionen.

      Erzeugt Zeiteinheiten anhand des laufenden Timer 2-Interrupts.\n
      Dieser ist auf 36 kHz eingestellt um die Hardware der serielle\n
      Schnittstelle zu bedienen (siehe in asuro.c unter
      SIGNAL (SIG_OVERFLOW2)).\n
      Die globalen Variablen \b count36kHz und \b timebase werden dort
      bearbeitet.\n
      In den hier vorhandenen Funktionen werden diese Variablen genutzt\n
      um Zeiten und Verzoegerungen zu erzeugen.
Siehe auch
Defines fuer unseren Asuro immer in asuro.h
Hier werden aktuell keine Defines benutzt.
Version
V— - 10.11.2003 - Jan Grewe - DLR
Original Version von der ASURO CD
V— - bis zum 07.01.2007 -
Bitte in Datei CHANGELOG nachsehen.
V001 - 13.01.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Zerlegte Sourcen in einzelne Dateien fuer eine echte Library.
V002 - 22.01.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
V003 - 26.03.2010 - Sternthaler
+++ Msleep()
Parameter von "int" auf "unsigned int" umgestellt. (Tip von Valen)

Definiert in Datei time.c.

Dokumentation der Funktionen

unsigned long Gettime ( void  )

Gibt die aktuelle Zeit in ms zurueck.

Da der Asuro keine Atomuhr hat, ist es die vergangene Zeit seitdem er eingeschaltet wurde.
Genauer: nachdem der Interrupt Timer2 aktiviert wurde.

Rückgabe
Einschaltzeit in Millisekunden (Bereich: unsigned long 0..286331153)
Das sind ca. 79.5 Stunden. Fuer die, die ihren Asuro also ohne Solarzellen
betreiben, reicht diese Zeitangabe bevor der Accu leer ist.
Beispiel:
(Nur zur Demonstration der Parameter/Returnwerte)
// Alle 500 ms die Front-LED umschalten.
unsigned long zeit;
unsigned char on_off = TRUE;
zeit = Gettime ();
while (1)
{
if (Gettime () > zeit + 500)
{
zeit = Gettime ();
FrontLED (on_off);
on_off ^= 1;
}
}

Definiert in Zeile 78 der Datei time.c.

{
return ((timebase * 256) + count36kHz) / 36;
}
void Msleep ( unsigned int  ms)

Wartefunktion in ms.

Diese Funktion nutzt die Sleep()-Funktion um mit dem uebergeben Parameter
Pausen in ms-Einheiten zu erhalten.

Parameter
[in]dauerWartezeit in Millisekunden.
Beispiel:
(Nur zur Demonstration der Parameter/Returnwerte)
// 1.5 Sekunde warten
Msleep (1500);

Definiert in Zeile 137 der Datei time.c.

{
unsigned int z;
for (z = 0; z < ms; z++)
Sleep (36);
}
void Sleep ( unsigned char  time36kHz)

Wartefunktion.

Die maximale Wartezeit betraegt 7ms. Fuer laengere Wartezeiten siehe Msleep().
Diese Funktion nutzt den Timer 2-Interrupt um ein 'zeitgefuehl' zu erhalten.
Der Interrupt wird mit 36 kHz, durch die Init()-Funktion initialisiert,
aufgerufen und zaehlt dort die globale Variablen count36kHz weiter.
Diese Funktion nutzt diesen Zaehler und berechnet daraus mit dem uebergeben
Parameter den Zeitpunkt wann die Pausenzeit erreicht ist, Danach bricht sie
ab, und im Hauptprogramm ist eben eine Wartezeit eingelegt worden.

Parameter
[in]time36kHzWartezeit x/36kHz (sec)
Beispiel:
(Nur zur Demonstration der Parameter/Returnwerte)
// 1 Millisekunde warten
Sleep (36);

Definiert in Zeile 108 der Datei time.c.

{
unsigned char ziel = (time36kHz + count36kHz) & 0x00FF;
while (count36kHz != ziel)
;
}