[elektro] STM32F4 EXTI rotary encoder

hg12345 hg12345 at freemail.hu
Sat Jun 27 20:13:23 CEST 2015


Miért adna hiba jelet? Az ALIAS egy C kiegészítés, ha tudja ezt akkor működnie kell. Azt nem tudom mennyire egyszerű, ha így kell engedélyezni akkor igen. Az IT feloldás lesz egy kicsit izgalmasabb, vagy rábízod magad a jószerencsére. Ha van DPS-p ebben, akkor ez F3 (72MHz) vagy F4 (168MHz) vagy F7(300MHz) akkor olyan teljesítmény van benne, hogy a polling kezelés nem észrevehető.De nem a SYSTICK-re kéne felfűzni, hanem egy független TIMR IT-re (ebből van 17db ezekben), így mindentől függetlenül állítható az IT szint, persze ha RTOST használsz akkor ez se kell.
"uprogc ." <uprogc at gmail.com> írta:
>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]
>>
>-----------------------------------------
>          elektro[-flame|-etc]


More information about the Elektro mailing list