Hallo Sven,
hier sind ein paar Funktionsprotypen, die man fuer
eine Timertabelle so gebrauchen kann. Den Code kann ich leider nicht
rausrücken, da er meiner Fa. gehört.
TIMERTAB_QUANTUM gibt den Takt des Hardwaretimers an.
Der Interrupthandler ist hier nicht aufgeführt, dieser wird durch
timertab_init() initialisiert.
Gruß
Oliver
#ifndef _TIMER_TAB
#define _TIMER_TAB
enum {timertab_NICHTPERIODISCH=0, timertab_PERIODISCH};
void timertab_init(void);
// Das Modul wird initialisiert.
// Wichtig, dies muss immer als erstes getan werden.
int timertab_allocate(void (*fktptr)(unsigned int), int periodisch);
// Sucht in der Timer Tabelle nach einem freien Timer.
// Rückgabe: -1 falls keiner gefunden, sonst >= 0.
// Übergebene Funktion vom Typ "void fkt(unsigned int)"
// wird bei Ablauf des Timers ausgefuehrt.
// periodisch == 1 : Nach Ablauf des Timers wird dieser wieder
// automatisch gestartet.
// periodisch == 0 : Nach Ablauf des Timers wird dieser nicht
// wieder automatisch gestartet.
void timertab_deallocate(int nr);
// Gibt einen Timer wieder frei, auch wenn dieser aktiv war.
void timertab_start(int nr, unsigned int arg, unsigned int ticks);
// Startet den Timer mit Nummer nr.
// Bei Ablauf des Timers wird die mit "int nr" assoziierte
// Funktion mit dem Parameter "arg" aufgerufen
// Die Laufzeit ist ticks*TIMERTAB_QUANTUM
void timertab_stop(int nr);
// Stoppt den Timer mit Nummer nr.
void timertab_continue(int nr);
// Laesst den Timer mit Nummer nr weiterlaufen, wenn dieser
// zuvor gestoppt wurde.
#endif