NiboRoboLib 3.6 - NIBObee Library
clock.h-Dateireferenz

Zeitzählung. Die Zeit steht in Sekunden und Milisekunden seit dem Start zur Verfügung. Mehr ...

gehe zum Quellcode dieser Datei

Funktionen

void clock_inc_irq (uint8_t ms, uint16_t us)
 
void clock_sleep (uint16_t ms)
 
void clock_sec_irq_hook ()
 
void clock_hundredth_irq_hook ()
 
void clock_set_timer (uint16_t ms)
 
void clock_wait_timer ()
 
uint16_t clock_get_timer ()
 
uint32_t clock_get_systime_ms ()
 
uint16_t clock_elapsed_ms ()
 

Variablen

volatile uint16_t clock_ms
 
volatile uint32_t clock_sec
 

Ausführliche Beschreibung

Zeitzählung. Die Zeit steht in Sekunden und Milisekunden seit dem Start zur Verfügung.

Die Funktion clock_inc_irq() muss regelmäßig von einem Timer Interrupt aufgerufen werden, bei Verwendung des PID Reglers (motpid.h) geschieht dies automatisch alle 1.022 ms!

Dokumentation der Funktionen

uint16_t clock_elapsed_ms ( )

Liefert die Zeit in Millisekunden seit dem letzten Aufruf der Funktion zurück (maximal ca. 65 Sekunden!).

uint32_t clock_get_systime_ms ( )

Liefert die Zeit in Millisekunden seit dem Systemstart zurück. (32 Bit -> Überlauf erst nach 49 Tagen...)

uint16_t clock_get_timer ( )

Liefert die Zeit in Millisekunden zurück, die die Funktion clock_wait_timer() zu diesem Zeitpunkt warten würde.

void clock_hundredth_irq_hook ( )

Wird jede hunderstel Sekunde aufgerufen (Achtung: Funktion wird aus dem IRQ Kontext aufgerufen!). Als 'weak-linking' Funktion kann sie einfach durch eine eigene Funktion void clock_hundredth_irq_hook() {} ersetzt werden.

void clock_inc_irq ( uint8_t  ms,
uint16_t  us 
)

Funktion zum Aufruf durch den IRQ. Wird bei Verwendung des PID Reglers automatisch alle 1.022 ms aufgerufen. Falls der PID Regler nicht verwendet wird, muss die Funktion regelmäßig von einem eigenen Timer-Interrupt aus aufgerufen werden.

void clock_sec_irq_hook ( )

Wird jede Sekunde aufgerufen (Achtung: Funktion wird aus dem IRQ Kontext aufgerufen!) Als 'weak-linking' Funktion kann sie einfach durch eine eigene Funktion void clock_sec_irq_hook() {} ersetzt werden.

void clock_set_timer ( uint16_t  ms)

Timer-Interval festlegen, auf den Ablauf des Timers kann man mit der Funktion clock_wait_timer() warten.

Parameter
msInterval in Millisekunden
void clock_sleep ( uint16_t  ms)

Wartet die angegebene Zeit (maximal 65 Sekunden (65535 ms)), die Zeit wird auch bei Ausführung von Interrupt Funktionen eingehalten (anders als bei der delay() Funktionen)!

void clock_wait_timer ( )

Die Funktion wartet auf den nächsten Ablauf des Timer-Intervals, das durch den Aufruf der Funktion clock_set_timer() festgelegt wurde. Die CPU wird für die Wartezeit in den Stromspar-Modus geschickt...

// Ziel: Die Loop-Funktion soll alle 20 ms aufgeführt werden!
void setup() {
}
void loop() {
// auf das nächste Interval warten:
// hierhin kommt man alle 20 ms:
...
}
*

Variablen-Dokumentation

volatile uint16_t clock_ms

Zählt bis 1000 (1s) in 1ms Schritten

volatile uint32_t clock_sec

Zählt die Sekunden seit dem Systemstart