ICF1 Flag löschen bei Änderung von Edge Select

OP #4498926
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.
#4499202
@  Conny Phi (conny_phi)

>"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?

Wenn man nur die Periodendauer eines Eingangssignals mißt und demzufolge 
die Flanke nicht umstellt.

>Oder konkret, muss ich in folgendem Geradeausfall, am Ende das ICF1 Flag
>löschen?

Ja.
OP #4500281
Falk, danke für die Antwort.
Erlaube mir eine kurze Nachfrage...

Falk B. schrieb:
> @  Conny Phi (conny_phi)
>
>>"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?
>
> Wenn man nur die Periodendauer eines Eingangssignals mißt und demzufolge
> die Flanke nicht umstellt.

In dem Abschnitt des Datenblatts geht es aber nach meinem Verständnis 
NUR um den Fall "After change of the edge...". Dass man das ICF1 Flag 
NICHT von Hand löschen muss, wenn man die Flankenerkennung beibehält, 
ist doch eigentlich außer Frage und müsste nicht im Datenblatt erwähnt 
werden, oder?
Mich macht dabei auch der Hinweis "if an interrupt handler is used" 
stutzig.

>
>>Oder konkret, muss ich in folgendem Geradeausfall, am Ende das ICF1 Flag
>>löschen?
>
> Ja.

In meinem Beispiel wird doch ein Interrupt Handler verwendet. Warum muss 
ich trotzdem das ICF1 Flag löschen?
#4500285
@  Conny Phi (conny_phi)


>In meinem Beispiel wird doch ein Interrupt Handler verwendet. Warum muss
>ich trotzdem das ICF1 Flag löschen?

Na weil sonst der Interrupt sofort wieder aktiv werden würde, obwohl gar 
keine echte Flanke erkannt worden ist. Durch das Wechseln der Flanke 
"verschluckt" sich die Logik und braucht einen Reset.
OP #4500310
Falk B. schrieb:
> @  Conny Phi (conny_phi)
>
>
>>In meinem Beispiel wird doch ein Interrupt Handler verwendet. Warum muss
>>ich trotzdem das ICF1 Flag löschen?
>
> Na weil sonst der Interrupt sofort wieder aktiv werden würde, obwohl gar
> keine echte Flanke erkannt worden ist. Durch das Wechseln der Flanke
> "verschluckt" sich die Logik und braucht einen Reset.

Hab das gerade mal ausprobiert und einen Interrupt Zähler eingerichtet. 
Es hat sich aber nicht gezeigt, dass er durch das Umstellen der Flanke 
sofort wieder den Interrupt aktiviert und die ISR ein zweites Mal 
durchläuft. Hm...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.