[elektro] STM32F4 EXTI rotary encoder
uprogc .
uprogc at gmail.com
Sat Jun 27 20:19:29 CEST 2015
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