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?