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


von Alfredo (Gast)


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.

von (prx) A. K. (prx)


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

von Lutz (Gast)


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!

von (prx) A. K. (prx)


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.

von Alfredo (Gast)


Lesenswert?

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

Trotzdem danke

von (prx) A. K. (prx)


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
...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.