STM32F4 EXTI Interrupt

Gast #4806972
Ich verwende den ISR für EXTI_9_5.
Ich warte auf einen Interrupt von Pin 9 oder Pin 6.
Sobald einer der beiden Interrupts auftritt, lösche ich seinen Flag und 
sperre die beiden Interrupts. Jedoch wird anschließend mit einem 
Interrupt vom anderen Pin die ISR trotzdem ausgeführt.
Im Register sind aber beide Interrupts gesperrt.

Hat jemand eine Vermutung woran es liegen könnte?
Gast
Ist das möglich, dass diese dann trotz gesperrten Interrupt abgearbeitet 
werden?

Gibt es eine Möglichkeit das zu umgehen?

Es ist Applikationsbedingt nicht möglich das beide Pins gleichzeitig 
eine steigende Flanke zum auslösen des Interrupts haben. Dazwischen 
liegen mind. 300 us
Gast
1
void EXTI9_5_IQRHandler( void )
2
{
3
  // Rising Edge?
4
  if(EXTI->PR & EXTI_Line9)
5
  {
6

7
    // Flag löschen
8
    EXTI->PR = (EXTI_Line6 | EXTI_Line9)
9

10
    // Interrupt sperren
11
    EXTI->IMR &= ~(EXTI_Line6 | EXTI_Line9)
12

13
    // Interrupt an EXTI_Line9
14
    status |= 1;
15

16
  }
17

18
  // Rising Edge?
19
  if(EXTI->PR & EXTI_Line6)
20
  {
21
    // Flag löschen
22
    EXTI->PR = (EXTI_Line6 | EXTI_Line9)
23

24
    // Interrupt sperren
25
    EXTI->IMR &= ~(EXTI_Line6 | EXTI_Line9)
26

27
    // Interrupt an EXTI_Line6
28
    status |= 2;
29
  }
30
}
Gast
>    // Flag löschen
>    EXTI->PR = (EXTI_Line6 | EXTI_Line9)
>
>    // Interrupt sperren
>    EXTI->IMR &= ~(EXTI_Line6 | EXTI_Line9)


Ich würde die Reihenfolge umdrehen.
Sonst könnte zwischen Löschen und Sperren evtl. ein neuer Interrupt 
feuern.

Antwort schreiben

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