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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.