mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik stm32 und IRQ an einem Pin


Autor: Alfredo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mir das EXTi Feauture angeschaut und hätte mal eine Frage dazu:

Im Moment verstehe ich das so, dass der STM32 einen Interrupt auslöst 
z.B auf Line 0 wenn an PA0 PB0 PC0 u.s.w eine Flanke stattfindet. 
(sofern Flanken konfiguriert sind)
Ich möchte aber nur PB0 auswerten. An andern Px0 sind leider noch andere 
Signale dran.
Klar kann man in der Routine schauen welcher Pin den IRQ ausgelöst hat, 
aber kann mann auch einen Pin einzeln für den IRQ freischalten, um keine 
unnützen IRQs auszulösen.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alfredo schrieb:

> Im Moment verstehe ich das so, dass der STM32 einen Interrupt auslöst
> z.B auf Line 0 wenn an PA0 PB0 PC0 u.s.w eine Flanke stattfindet.
> (sofern Flanken konfiguriert sind)

Yep, aber nicht an allen, sondern an genau einem dieser Pins. Ausgewählt 
in AFIO_EXTICR1/2/3/4

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie A.K. schon geschrieben hat: Im AFIO_EXTICRx Register legst Du 
vorher fest, welcher Pin (PA0 | PB0 | PC0...) für den Interrupt 
aktiviert wird. Welche Interruptline dann ausgelöst hat, kannst Du im 
EXTI_PR Register auslesen. Mit diesen beiden Informationen zusammen ist 
es eindeutig.
Man kann also nur einen Px0 überwachen und muß sich entscheiden, 
welchen man nimmt (also den von Port A oder den von Port B etc.). Das 
finde ich persönlich doof, da man auch beim Hardwaredesign sehr 
aufpassen muß, daß man immer eine andere Portnummer nimmt, wenn man 
mehrere EXTI überwachen will!

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lutz schrieb:

> daß man immer eine andere Portnummer nimmt, wenn man
> mehrere EXTI überwachen will!

Man muss eine andere Bitnummer (0..15) nehmen.
Die Portnummer (A/B/...) darf bleiben.

Autor: Alfredo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja super, gleich in die Falle getappt. Habe an PB0 und PB1 verschiedene 
Interrupts (oder hätte sie gerne).

Trotzdem danke

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wo ist das Problem? Nur bei PA0 und PB0 hättest du ein Problem.

PA0,PB0,PC0,... => einer davon geht an EXTI0
PA1,PB1,PC1,... => einer davon geht an EXTI1
...

Also geht auch
PB0 => EXTI0
PB1 => EXTI1
...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.