[elektro] STM32F4 EXTI rotary encoder
uprogc .
uprogc at gmail.com
Sat Jun 27 19:28:33 CEST 2015
Szia,
Koszi a reszletes leirast.
Roviden:
Szoval az, hogy erre nem ad a fordito hibat meg nem jelenti azt hogy
mukodni fog ?
void EXTI4_15_IRQHandler(void) Ez a belinkelt oldalrol van.
Tovabba :
NVIC_InitStruct.NVIC_IRQChannel = EXTI4_IRQn | EXTI9_5_IRQn;
EXTI_InitStruct.EXTI_Line = ROT_ENC_TRIGGER_EXTI_LINE |
ROT_ENC_DIRECTION_EXTI_LINE;
SYSCFG_EXTILineConfig(ROT_ENC_SYSCFG_EXTI, ROT_ENC_TRIGGER_EXTI_PS |
ROT_ENC_DIRECTION_EXTI_PS);
Vagy nem ennyire egyszeru ?
Softwares polling-al az a bajom, hogy a DSPtol nem kellene tul sok idot
elvegyen, ezert is akarom attenni a systicktol IT-re.
U,
Szabi
2015-06-27 20:09 GMT+03:00 hg12345 <hg12345 at freemail.hu>:
> Az így nem fog menni! magad nem tudsz ilyen módon új IT-t csinálni, de az
> IT-k mint WEAK vannak definiálva a legtöbb ARM rendszerben STARTUP_***.s
> file-ban, csak így oldható meg hogy saját IT handler csinálj, a lehetséges
> IT-kre. Innen kezdve már csak egy dolgod van hogy a két IT-t EXTI4 és az
> EXT5...9 egy feldolgozóra programra definiáld. Erre használható az "ALIAS"
> K.E.I.L-ben így kell csinálni void EXTI4_IRQHandler(void)
> ALIAS(EXT4_15_IRQHAndler); //az IT-t használom a program
> indításához is..... void EXTI9_5_IRQHandler(void)
> ALIAS(EXT4_15_IRQHAndler) és most megcsinálod a közös IT feldolgozást: void
> EXT4_15_IRQHAndler(void){............} Arra azért kell vigyázni, hogy az
> NVIC automatikus IT kérelem törlés mindig arra vonatkozik ami (aki)
> meghívja a rutint, vagyis az első IT hívásra. Ezért ha közben feldolgozod a
> másik IT-t , akkor attól függően hj a PEND bitet nem törlöd ki belül, akkor
> egy"már feldolgozott IT-re fogsz "fantom" IT kapni... hibának fogod látni.)
> Remélem érthetően írtam le. A legtöbb korrekt programozási rendszerben a
> fenti megoldás tartalmazza a "gyári" hiszen a nem használt IT-ket
> összegyűjtik a "Default_IRQHandler"-ben is hiba esetén itt egy végtelen
> ciklusban megakasztják a program futását. Ha erre rákeresel megtalálod a
> fenti megoldást.Ez már szerencse kérdése, hogy ez az INIT-ben asm-ben
> oldották meg, vagy magasabb szinten C-ben. :-)
> -------------------------------------------------------------Ennél sokkal
> egyszerűbb és üzembiztosabb, ha független IT-ként kezeled az egészed és
> közös CALLBACK függvényre vezeted vissza az encoder feldolgozást. Általában
> ezt csinálják a legtöbb IT-ben... 10KHz egy peridoikus IT-ben egy softwares
> polling bőven kiszolgál és sokkal egyszerűbb! Ha nagyobb sebesség kell,
> amit kötve hiszek, :-(), akkor át kell huzalozni a bekötést, és TMR2,3,4
> közvetlenül kezeli az quadencodereket is ....
> =================================================================================Elnézést,
> de a kérdéseid alapján felvetődik egy belső hang, elolvastad a MANUAL-t?Az
> ST különösen figyelmes a fejlesztőkkel, általában $10 adja a NUCLEO( ez a
> modernebb) és a DISCOVERY demó boardjait (itthon a FDH Kft ingyen kiszállít
> másnapra, BP-n), amit tartalmazza a teljes értékű debuggert/programozót is.
> Netről letölthető mindegyikhez a mintapélda csomag, ami nagyon sok példát
> tartalmaz. Érdemes lenne indulásként ezekkel egy picit gyakorolni.
> "uprogc ." <uprogc at gmail.com> írta:
> >ui: Talan igy ?
> >
> >EXTI4_15_IRQHandler(void)
> >{
> >
> >if (EXTI_GetITStatus(EXTI_Line4) != RESET || EXTI_GetITStatus(EXTI_Line5)
> !=
> >RESET)
> >...
> >
> >}
> >
> >
> >2015-06-27 18:56 GMT+03:00 uprogc . <uprogc at gmail.com>:
> >
> >> Szia,
> >>
> >> Koszi.
> >>
> >> Kozben talaltam valamit, ki fogom probalni:
> >>
> http://electronics.stackexchange.com/questions/99915/stm32-rotary-encoder-with-hardware-interrupts
> >> Meg lehet azt csinalni, hogy az EXTI4 es az EXTI5 egy IT-be fusson be ?
> >>
> >>
> >> U,
> >> Szabi
> >>
> >> 2015-06-26 19:27 GMT+03:00 elight <elight at gmail.hu>:
> >>
> >>> Na EZ nekem is jól jött volna , amikor elkezdtem ezzel foglalkozni !
> >>> :-) :-) :-)
> >>>
> >>>
> >>> http://embedded-lab.com/blog/?p=9149
> >>>
> >>> Üdv István
> >>>
> >>>
> >>>
> >>> 2015-06-26 13:11 keltezéssel, elight írta:
> >>> > Szia
> >>> >
> >>> >
> >>> > az EXTI jól működik... ha jól konfigolod...
> >>> > Rakj külső felhúzót ,
> >>> > és ha optikai , nem is kell a kondi.
> >>> > Az exti-nél a jel polarity-t kell minden megszakításnál
> >>> > váltogatni.. És az akkor vett minták alapján a forgatás könnyen
> >>> > kitáblátozatolható.. Nem volt ezzel gondom..
> >>> > Olyan gyors, ahogy tekereg...
> >>> >
> >>> > Üdv István
> >>> > 2015-06-26 13:01 keltezéssel, uprogc . írta:
> >>> >> Sziasztok,
> >>> >>
> >>> >> Eddig Systick-el olvastam be a rotary enkodert, kb 3 ms-ra van
> allitva,
> >>> >> mukodik.
> >>> >> Mivel tobb lepesu optikai enkodert szeretnek majd hasznalni a
> >>> mechanikus
> >>> >> helyett, gondoltam atteszem EXTI-re. Hat nem mukodik.
> >>> >> Gondoltam prell van, 100nF-100pF -ig tobb erteket kiprobaltam, de
> nem
> >>> >> jo.
> >>> >> Meg a 100 pF-al is mintha belassulna, de inkabb bedoglik. Meg a
> lassu
> >>> >> lepeseket sem veszi.
> >>> >>
> >>> >> Erdemes kulsofelhuzo ellenallassal es kondival megprobalni ?
> >>> >> Egyeb otlete valakinek otlete ezzel kapcsolatosan?
> >>> >> (Bekotesek jok ;) )
> >>> >>
> >>> >> U,
> >>> >> Szabi
> >>> >> -----------------------------------------
> >>> >> elektro[-flame|-etc]
> >>> >>
> >>> >
> >>>
> >>> -----------------------------------------
> >>> elektro[-flame|-etc]
> >>>
> >>
> >>
> >-----------------------------------------
> > elektro[-flame|-etc]
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list