[elektro] STM32F4 EXTI rotary encoder

uprogc . uprogc at gmail.com
Sat Jun 27 20:31:08 CEST 2015


Koszi mindenkinek, holnap meg nekiallok, es valamelyik megoldast, vagy akar
tobbet is kiprobalok, delutan.

U,
Szabi

2015-06-27 21:19 GMT+03:00 uprogc . <uprogc at gmail.com>:

> ui: Nincs RTOS. DMA-t viszont hasznalok, ket csatornat, ADC/DAC.
>
> 2015-06-27 21:17 GMT+03:00 uprogc . <uprogc at gmail.com>:
>
>>
>> F4.
>>
>>
>> 2015-06-27 21:13 GMT+03:00 hg12345 <hg12345 at freemail.hu>:
>>
>>> 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]
>>> -----------------------------------------
>>>           elektro[-flame|-etc]
>>>
>>
>>
>


More information about the Elektro mailing list