Hallo,
im Datenblatt (z.B. ATmega16a) findet man einen Hinweis, dass man das
ICF1 Flag löschen muss, wenn man die Trigger Flanke für den Capture
Event z.B. von steigend auf fallend umschaltet:
"After a change of the edge, the Input Capture Flag (ICFn) must be
cleared by software."
Meine Frage bezieht sich nun auf die anschließend genannte Ausnahme von
dieser Regel:
"For measuring frequency only, the clearing of the ICF1 Flag is not
required (if an interrupt handler is used)."
Was ist mit "measuring frequency only" gemeint?
Oder konkret, muss ich in folgendem Geradeausfall, am Ende das ICF1 Flag
löschen?
1 | ISR(TIMER1_CAPT_vect)
|
2 | {
|
3 | if (TCCR1B & (1<<ICES1)) //aktuell steigende Flanke?
|
4 | {
|
5 | capturewert = ICR1;
|
6 | TCCR1B &= ~(1<<ICES1); //umschalten auf fallende Flanke
|
7 | //für nächstes Capture Ereignis
|
8 | TIFR = (1<<ICF1); //ICF1 löschen notwendig???
|
9 | }
|
Vielen Dank für jede Erklärung zu diesem Thema.