STM32F103 EXTI vprašanje

Vse kar je v povezavi z ARM-Cotrex-M procesorji. Sem spada tako HW kot SW.

Moderator: tilz0R

STM32F103 EXTI vprašanje

OdgovorNapisal/-a urosg » 10 Maj 2021, 14:12

Zdravo,

imam problem, kjer ne vem kako naprej oz. kako najbolj prav.

Uporabljam STM32F103 in imam na njem vezanih 18 vhodov.

Vsak vhod je skonfiguriran:
Koda: Izberi vse
   GPIO_InitStruct.Pin = <GPIOPIN>;
   GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
   GPIO_InitStruct.Pull = GPIO_PULLUP;
   HAL_GPIO_Init(<GPIOPORT>, &GPIO_InitStruct);


ker je seveda vhodov vec kot je posameznih pinov v posamezni skupini (PA,PB, ...) so pini po skupinah in se stevilcno prekrivajo.

Npr. PA0 in PB0; po konfiguraciji in kot jaz razumem naj bi po tem ko se tako skonfigurira in omogoci tudi EXTI0 oba prozila prekinitev, vendar mi ne dela tako...
Uporabniški avatar
urosg
 
Prispevkov: 554
Pridružen: 10 Feb 2015, 14:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 18 krat
Prejel zahvalo: 100 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 10

Re: STM32F103 EXTI vprašanje

OdgovorNapisal/-a s54mtb » 10 Maj 2021, 14:18

Kako pa dela?

Imaš clock za periferijo vključen?
Always going the extra mile.
https://www.buymeacoffee.com/s54mtb
Uporabniški avatar
s54mtb
 
Prispevkov: 13148
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1928 krat
Prejel zahvalo: 5282 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: STM32F103 EXTI vprašanje

OdgovorNapisal/-a urosg » 10 Maj 2021, 14:20

s54mtb je napisal/-a:Kako pa dela?

Imaš clock za periferijo vključen?


Proži se samo ob dogodku na portu ki je bil zadnji konfiguriran.
Uporabniški avatar
urosg
 
Prispevkov: 554
Pridružen: 10 Feb 2015, 14:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 18 krat
Prejel zahvalo: 100 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 10

Re: STM32F103 EXTI vprašanje

OdgovorNapisal/-a urosg » 10 Maj 2021, 14:24

No ja da si odgovorim kar sam... Sem šel še enkrat se zakopat v dokumentacijo.

V poglavju 9.1. piše o različnih načinih kako se nastavlja lahko pin, v poglavju 9.1.3. je referenca na poglavje 10.2. kjer piše več o prekinitvah itd.

Potem je še poglavje 9.2. kjer so spisani registrsi za nastavljanje portov...

Vendar, (po mojem mnenju) v poglavju 9.1.3. manjka referenca na 9.4. kjer so pa potem AFIO registri, ki dolocajo kater PORT dejansko prozi doloceno prekinitev in ce beres poglavje (9.1. in 9.2.) o GPIO nastavitvah, te pelje mimo poglavja 9.4. in s tem manjka pomembna informacija.

Našel sem pa to zato, ker nisem več klikal po linkih znotraj PDFa ampak sem scrollal po PDFu.
Uporabniški avatar
urosg
 
Prispevkov: 554
Pridružen: 10 Feb 2015, 14:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 18 krat
Prejel zahvalo: 100 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 10

Re: STM32F103 EXTI vprašanje

OdgovorNapisal/-a s54mtb » 10 Maj 2021, 14:36

F100 je drugače malo samosvoj.
Always going the extra mile.
https://www.buymeacoffee.com/s54mtb
Uporabniški avatar
s54mtb
 
Prispevkov: 13148
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1928 krat
Prejel zahvalo: 5282 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: STM32F103 EXTI vprašanje

OdgovorNapisal/-a urosg » 10 Maj 2021, 14:42

No ja, sem šel na hitro pogledat še za F200 ter F400 in imata enako "hibo", samo da se skrivajo v drugih registrih (imata a v SYSCFG_EXTICRx).

Že dolgo časa sem imel v glavi da to nekako ne gre skupaj, ampak sem zadnjič ko sem pripravil nov prototip na hitro pogledal dokumentacijo in si mislil, da sem očitno narobe prej razumel, vendar očitno nisem.

EDIT: Mislim, da je to kar ARM Cortex-M zadeva, sem šel preverjat še pri LPC1800 in je v bistvu enako.
Uporabniški avatar
urosg
 
Prispevkov: 554
Pridružen: 10 Feb 2015, 14:38
Kraj: Domžale, Mengeš, Kamnik
Zahvalil se je: 18 krat
Prejel zahvalo: 100 krat
Uporabnika povabil: mucek
Število neizkoriščenih povabil: 10

Re: STM32F103 EXTI vprašanje

OdgovorNapisal/-a tilz0R » 11 Maj 2021, 07:41

EXTI interrupt ne bo delal na dveh pinih hkrati, ki imata isto stevilko, recimo PA0 in PB0. Samo eden Px0 naenkrat. Vmes je mux, ki routa PxY vhode na posamezen EXTI_Y vhod za interrupt.

Cortex omogoča 256 ali 480 interruptov (odvisno kateri Cortex-M). Od tukaj tudi ta limitacija.

Ker imaš več vhodov, kot je dejanskih največ irqjev možnih za EXTI, lahko narediš zunanji push-pull na open drain pretvornik in povežeš več vhodov na en MCU pin. Ko se sproži IRQ, dejansko pogledaš kateri pin je spremenil stanje. Hitre IRQje pelješ direkt, počasne preko muxa. Rabiš pa en NMOS na vsak muxan vhod.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1941
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 236 krat
Prejel zahvalo: 563 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 119


Vrni se na ARM-Cortex-M

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost