Gast
#235937
Hallo Forum Freunde,
ich programmiere gerade meinen ersten Timer in C. Kann mir jemand
vielleicht sagen was an den Funktionen falsch ist?
Also wenn ich die Funktion v_Timer0_wait(50000) zwanzig mal nach
einander aufrufe müsste ich doch eigendlich eine Wartezeit von 1Sekunde
haben. Leider Togelt der PORT sehr viel schneller.
Wo könnte der Halken liegen?
Mit freudlichen Grüßen
Christan Hölscher
--------------------------------------------------------------
v_Timer0_wait(50000);
//20 mal Aufrufen müste doch eigendlich 1s sein? oder nicht..
FUNKTION:
#include <at898252.h> // Headerdatei Controller einbinden
#define EXT_QUARZ 11.059 //Ausgabe Quarz Angabe MHz
#define VORTEILER 12
#define LATENTZEIT 9 //Zeit bis TL0 in ISR gesetzt ist
#define REL_VAL 65536 + LATENTZEIT
void v_Timer0_init(void)
{
TMOD = 0x01; //Initialisierung Timer 0 als Timer0 16Bit-Zeitgeber
TR0 = 1; //Timer = starten
}
void v_Timer0_wait(unsigned int time) //Maximale Größe 50ms
{
unsigned int uiReloadval = REL_VAL (time*EXT_QUARZ)/VORTEILER;
TL0 = (unsigned char) uiReloadval;
TH0 = uiReloadval / 256;
while(TF0 == 0);
}