[elektro] STM32F4 EXTI rotary encoder

uprogc . uprogc at gmail.com
Sun Jun 28 19:28:54 CEST 2015


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