Interrupt im Interrupt konfigurieren :-)

Gast #2520005
Hallo zusammen, brauche mal kurz eine schnelle Hilfe.

Ich möchte eine Flankenerkennung mit einem ext. Interrupt realisieren.

Bei der Poitiven flanke soll er das erste mal auslösen und dann im 
interrupt auf eine negative erkennung umstellen.

Klappt noch nicht!!!!!

Hat jemand ne idee?


..hier mal angedeutet was ich will

SIGNAL (SIG_INTERRUPT3)
{
if(dummy==0)
{   uart_puts("positive Flanke");
    EICRA|= (1<<ISC31)|(0<<ISC30);//config für fallende flanke
    dummy=1;
}
else
{    uart_puts("negative Flanke");
     EICRA|= (1<<ISC31)|(1<<ISC30);//config für steigende flanke
     dummy=1;


}

Hauptprogramm:
...INIT...

sei();
EIMSK|=(1<<INT3);
EICRA|= (1<<ISC31)|(1<<ISC30);//für positive Flanken

EIFR=0xFF;

for(;;);
@  Jens Lampe (Gast)

>Klappt noch nicht!!!!!

>Hat jemand ne idee?

Dazu muss man die entsprechenden Bits KOMPLETT überschreiben, nicht nur 
neu setzen. Ausserdem sollte man sich über Bitmanipulation 
informieren und feststellen, dass man sinnvoll keine Null schieben kann.

>if(dummy==0)
>{   uart_puts("positive Flanke");
>    EICRA|= (1<<ISC31)|(0<<ISC30);//config für fallende flanke

Eher so

     EICRA &= ~((1<<ISC31)|(0<<ISC30));
     EICRA |= (1<<ISC31);

>     EICRA|= (1<<ISC31)|(1<<ISC30);//config für steigende flanke

Dito.

     EICRA &= ~((1<<ISC31)|(0<<ISC30));
     EICRA |= (1<<ISC31)|(1<<ISC30);

Ausserdem kann es nötig sein, direkt nach der Flankenumstellung einen 
parasitär erzeugten Interrupt zu löschen, der eben durch die Umstellung 
generiert wurde. Durch Schreiben einer 1 auf das passende Flag.

MfG
Falk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.