Atmega128 Analog Comparator Interrupt Flag löschen

Gast #3506532
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe ein Problem mit dem Analog Comparator des Atmega128. Ich habe 
den Interrupt bei steigender Flanke aktiviert:
1
/* Analog comparator initialization*/
2
void AC_Init()
3
{
4
  /*AC "first off", interrupt enabled, interrupt on rising output edge*/
5
  ACSR = (1<<ACD)|(0<<ACBG)|(1<<ACIE)|(0<<ACIC)|(1<<ACIS1)|(1<<ACIS0);
6
}

Wenn ich die ISR ausführe, möchte ich beim ersten Durchlauf einen Zähler 
inkrementieren, 100ms warten und danach die ISR verlassen. Ist der 
AC-Ausgang immer noch "high", dann soll im nächsten Aufruf der ISR etwas 
ausgeführt werden. Dazu wollte ich beim ersten Aufruf der ISR die 
Interrupt Flag ACI löschen, doch ich habe festgestellt, dass diese 
bereits direkt nach dem Aufruf gelöscht wird. Also müsste die ISR doch 
nach Durchlauf des ersten ISR-Aufrufs erneut aufgerufen werden, da der 
AC-Ausgang immer noch "high" ist. Aber es passiert leider kein zweiter 
Interrupt nach Durchlauf des ersten ISR-Aufrufs. Hier die ISR:
1
ISR(ANALOG_COMP_vect)
2
{  
3
  cli();
4

5
  counter++;
6

7
         ACSR &= ~(1<<ACIE);/*deactivate analog comparator interrupt*/   
8
  if(counter == 2)
9
  {
10
            //Hier soll etwas ausgeführt werden
11
  }
12
  else{_delay_ms(100);}
13
  
14
         sei();
15
         ACSR |= (1<<ACIE); /*activate analog comparator interrupt*/ 
16
}

Habe es auch schon mit deaktivieren und erneuten aktivieren des AC 
versucht aber es bracht keine Veränderung. Habt ihr eine Idee woran es 
liegen könnte?

Vielen Dank und viele Grüße.
Gast #3506545
Lesenswert?
• ▲
▼
Hi

>Also müsste die ISR doch
>nach Durchlauf des ersten ISR-Aufrufs erneut aufgerufen werden, da der
>AC-Ausgang immer noch "high" ist.

Der Interrupt nur bei einer Änderung (Toggle) oder einer steigenden bzw. 
fallenden Flanke von ACO ausgelöst. Statisches ACO löst keinen Interrupt 
aus.

MfG Spess

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.