Gast
#943217
Hallo!
Ich nutze die Timer 0 und 1 bereits und möchte Timer 2 gerne benutzen um
Zeit zu messen. Um sicher zu gehen, dass bereits eine bestimmte Zeit
(0.5 sekunden) verstrichen ist, habe ich eine Schleife eingefügt.
Irgendwie funktioniert das nicht so wies soll. Systemtakt ist 4Mhz. Ich
starte den Timer also mit dem höchsten Prescaler (1024) und erhalte
4khz. Außerdem möchte ich einen Interrupt auslösen, sobald der Timer
überläuft.
TCCR2 |= (1<< CS22) | (0<<CS21) | (1 << CS20);
TIMSK |= (1<<TOIE2);
Dies sollte 16 mal in der Sekunde geschehen. Den Interrupt fange ich wie
folgt ab:
ISR(TIMER2_OVF_vect)
{
systemtime++;
}
Systemtime ist halt ein Int.
Ich starte also den Timer, tue irgendwas, dann setze ich einen zweiten
Integer starttimer=systemtime und messe. Ich will sichergehen, dass
mindestens eine halbe Sekunde vergangen ist und tue dies hier:
while((systemtime-starttime)<8)
{
tuwas
}
Leider wartet der Mega keine halb Sekunde. Ich würde fast behaupten, er
wartet gar nicht. Wird mir da etwas wegoptimiert oder habe ich mit
Timer/Interrupt etwas falsch gemacht? Ich würde mich freuen, wenn ihr
mir (mal wieder) helfen könntet.