STM32F4 EXTI Interrupt

Gast #4806972
Lesenswert?
• ▲
▼
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 #4806994
Lesenswert?
• ▲
▼
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 #4807004
Lesenswert?
• ▲
▼
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 #4807195
Lesenswert?
• ▲
▼
>    // 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

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.