Moinsen,

ich möchte die Input Capture Unit nutzen, um die Anzahl von Interrupten zwischen zwei externen Events zu zählen. Genauer gesagt nehme ich nur das Flag.
Ich lasse in der ISR eine Speicherstelle hochzählen, bis das Flag gesetzt ist, gebe zu Kontrolle den Wert über LED´s aus und setzte den Zähler dann wieder 0 und lösche wie im Datenblatt angegeben das Flag mit log. 1.

Nur es funktioniert gar nicht. Wenn ich das Flag mit sbrs teste passiert nix, und mit sbrc geht unkontroliert die Lutzie.
Hat dazu jemand eine Idee?

Danke

Code:
ldi r30,116;Interruptcounter laden
ld tmp,Z
inc tmp

st Z,tmp
in tmp,TIFR
sbrs tmp,0b00000101
rjmp same
ori tmp,0b00100000;das Verhalten ändert sich nicht, wenn ich die T1 Flags ändere...
out TIFR,tmp
ld tmp,Z
out PORTD,tmp
ldi tmp,0
st Z,tmp
same:
Um genau zu sein: ich habe ca. alle 10ms einen Int über Timer1 und an dem ICP1 ein DCF Modul. Um den intern erzeugten Takt mit dem genauen DCF Signal zu synchronisieren, zähle ich zwischen zwei steigenden Flanken die Interrupte, um zu sehen ob ich die Werte in OCR1L/H angleichen muss.

PS.: ist das bei euch auch so, das ihr bei sbrs/c die Bit Nummer in einer Binären Zahl kodieren müsst ( also 0b00000101 für Bit 5)?