Wartefunktion funktioniert nicht

Gast #1722042
Lesenswert?

Hallo,

ich brauche eine präzise Wartefunkion. Daher habe ich folgendes gemacht:

1
uint8_t t = 0;
2

3
void ton(void)
4
{
5
    TCCR1B = (1<<CS11) | (1<<WGM12);
6
    OCR1A  = 200;
7

8
}
9

10
    
11
ISR (TIMER1_COMPA_vect)
12
{
13
    t++;
14

15
}
16

17
void warte(uint16_t delay)
18
{
19
    ton();
20
    while(t<delay){}
21
    TCCR1B = 0; 
22
    t=0;
23

24

25
}


Warum funktioniert das nicht?
Ich habe mit einem Logicanalyser festellen können, dass der 
Interrupthandler zwar immer wieder aufgerufen wird, und auch t wird 
immer wieder mit 1 addiert, aber das problem ist, dass er die 
whileschleife immer als wahr anssieht, so wie es mir scheint.


Wäre nett wenn jemand mal drübersehen könnte.

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren