Forum: Mikrocontroller und Digitale Elektronik Wartefunktion will nicht


von Heinz (Gast)


Lesenswert?

Nabend.


Ich möchte mit dem Timer1 eine Wartezeit von ca 1/4 s (at 16 MHz) 
realisieren.

Folgende Einstellungen des Timer:
1
  TCCR1B=(1<<CS12)|(1<<CS10);  // Clock/1024
2
  OCR1AH=62;


Und die Wartefunktion sieht so aus:
1
void warte(unsigned int ms)
2
{  
3
  TCNT1L=0;    // TCNT wird auf 0 gesetzt
4
  TCNT1H=0;
5
  TIFR=0;     // Flag wird zurückgesetzt
6
  while((TIFR&0b00010000)==0);
7
}


Die Wartefunktion wartet aber leider nicht so lang wie erwartet. Was 
mache ich falsch?

von spess53 (Gast)


Lesenswert?

Hi

> TIFR=0;     // Flag wird zurückgesetzt

Nein. Ein Interruptflag wird durch Schreiben einer 1, nicht einer 0 
gelöscht.

MfG Spess

von Heinz (Gast)


Lesenswert?

Jup, funktioniert. Danke! ;)

von Johannes M. (johnny-m)


Lesenswert?

Heinz wrote:
>   OCR1AH=62;
> [...]
>   TCNT1L=0;    // TCNT wird auf 0 gesetzt
>   TCNT1H=0;
Das geht in beiden Fällen schief! Bitte mal in AVR 16-Bit-Register 
reinschauen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.