[elektro] STM32F4 EXTI rotary encoder
uprogc .
uprogc at gmail.com
Wed Jul 1 14:28:23 CEST 2015
Sziasztok,
(mech. enc.)
A korabban altalam linkelt oldalon levo megoldast veglegesitettem, kitunoen
mukodik, nem kell semmi HW mentesites.
Egy sort azert hozza kellett adni ;)
Tovabba nem emlitette itt senki, de *az STM32 -ben a TIM-ek tudnak enkoder
modot !*
Kiprobaltam ezt is. Szuroket egyelore nem kapcsoltam be, erzekeny is
(nyilvan) a prellre, ettol eltekintve jol mukodik; optikai, soklepesu
enkoder lekezelesere erosen alkalmas.
U,
Szabi
2015-06-28 20:28 GMT+03:00 uprogc . <uprogc at gmail.com>:
> Sziasztok,
>
> Atfaragtam a korabban belinkelt oldalon talalhato encoder kodot, es
> mukodni latszik.
> Ket IT, kulon-kulon, le -es felfuto elre, mindketto.
> A mech enkoder prellre erzekeny, egyelore a 40k-n 200nF van, igy is tobbet
> lepik egy elforditasra. Most kifogytam a 100nF-bol, majd jovo heten
> valamikor folytatom.
>
> Erdekes a korabban ide altalam beidezett fuggveny 100nF-al, semmit sem
> ment a sima IT-vel. (Systick ITvel meg egesz jol mukodott.)
>
>
> A Line6, 7-re tudok kerni kulon IT-t?
>
> ui: jo hogy irtatok az M7-et, meg is nezem ;)
>
> U,
> Szabi
>
>
> 2015-06-28 11:26 GMT+03:00 hg12345 <hg12345 at freemail.hu>:
>
>> Hi, a DMA-nak nincs igazán teljesítmény csökkentő hatása a rendszer
>> számára!Mivel az F4 mátrix elrendezésű, a RAM nem véletlenül megosztott, a
>> FLASH is külön ágon van. A DMA és uC memória ütközés esetén a 2:3 vagy 1:2
>> megosztással osztoznak az időn azonos memória blokk hozzáférés esetén. De
>> ehhez vedd figyelembe, hogy a CORTEX magok gyárilag tartalmaznak egy dupla
>> előbeolvasó 128 bites buffert ütközésesetén is nagy valószínűséggel még a
>> program megakadás nélkül futhat ebből, ezt egészítették ki az ST-nél egy
>> CACHE-l.Csak egy dolog okozhat tényleg problémát, ha adathoz akár
>> hozzáférni a uC, ez tényleg várakozást okozhat.de a AD/DA.... 1M körüli
>> DMA tevékenység a már önmagában kevesebb mint 1% teljesítmény csökkenést
>> okozhat teljes ütközés esetén. Ez nem kimérhető!
>> "uprogc ." <uprogc at gmail.com> írta:
>> >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]
>> >>>
>> >>
>> >>
>> >-----------------------------------------
>> > elektro[-flame|-etc]
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
>
>
More information about the Elektro
mailing list