Dies ist meine Timing-Library für Atmel ATmega Mikrocontroller.
Die Lib habe ich schon in vielen Projekten (CAN-MMC-Datenlogger für das Formula Student Team
KaRaT der
TU Kaiserslautern, Beschleunigungssensoren Verarbeitung für das
Fraunhofer IESE, Ansteuerung von 20 Lasern mit Software-PWM für eine medizinische Anwendung, Kleiner Laser Scanner mit zwei Spiegeln) auf verschiedenen Mikrocontrollern (ATmega8, ATmega128, AT90CAN128) problemlos verwendet.
Dokumentation kommt noch - Sourcecode ist die zuverlässigste Dokumentation!
Nur soviel: die externe Variable
runtime
vom Typ
TIME
enthält die vergangene Zeit seit Systemstart in ticks.
Ticks pro Sekunde ist in HZ definiert.
Umrechnungen zwischen TIME und Sekunden geschieht mit folgenden Funktionen und Macros:
- tick2us, tick2ns, tick2ms, tick2sec: Funktionen zur Umwandlung in SI-Einheiten
- MS2TICK(ms), US2TICK(us), SEC2TICK(sec), MIN2TICK(min): Macros (wird bei Konstanten zur Compilierzeit umgerechnet, wie unten im Beispielcode)
Periodische Tasks definieren:
- PERIODIC_TASK(period, code): Der
code
wird jede Periode ausgeführt.
- PERIODIC_TASK_DELAYED(period, delay, code): Wie PERIODIC_TASK aber die erste Ausführung wird um
delay
verzögert.
- PERIODIC_TASK0(period, code): Wie PERIDOC_TASK, aber die erste Ausführung startet sofort und nicht erst nach der Periode.
Jeder Task belegt
nur 4 Byte RAM (nämlich ein
static TIME
)