Timer Output Compare manuell abfragen

Gast #2425662
Lesenswert?

Hi,

Ich hatte grade etwas ausprobiert was, nicht ganz funktioniert:
1
ISR (USART_RXC_vect)
2
{  
3
  _inline_fifo_put (&infifo, UDR);
4
  
5
  if(TIFR & (1<<OCF1A))
6
  {
7
    TIFR &= (0<<OCF1A);
8
    TCNT1=0;
9
    PORTC=fifo_get_nowait(&infifo);
10
  }
11
}

Es geht um die if-Abfrage. Ich habe das Outputcompare Register auf einen 
Wert eingestellt. Wenn der erreicht ist, wird ja das Output Compare 
Match Flag des Timers gesetzt, was ich mit "TIFR & (1<<OCF1A)" abfrage. 
Wenn der Match stattgefunden hat, soll also in die if abfrage gegangen 
werden und dort soll sowohl der Timer, als auch das Flag manuell 
zurückgesetzt werden und die Prozedur von neuem beginnen.

Aber es hat den Anschein, dass "TIFR & (1<<OCF1A)" immer true ist. Was 
hab ich falsch gemacht?

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