Forum: Compiler & IDEs Timer Output Compare manuell abfragen


von dieter (Gast)


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?

von MWS (Gast)


Lesenswert?

Interruptflags warden durch Schreiben einer 1 gelöscht.

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.