[elektro] Cortex M4 Interrupt, stack
hg12345
hg12345 at freemail.hu
Tue Apr 7 15:38:19 CEST 2015
Hiaz IT verembe nem célszerű belenyúlni, de amúgy megoldható, de CORTEX M3/4 magok összetett utasításai nem ATOMIC szerűek, ezekbe is képes az IT bele szakítani. (A hibakezelő IT-kben (NMI) ezt csinálják, fölkapják a stack tetejét és azt analizálják ki. Amúgy ha már idejutott a program akkor teljesen mindegy, mert újra indítás következik.... De ezek már olyan magas szintűek, amiket már csak a Reset tud megszakítani.Amúgy a stack-en a következő adatok vannak a sorrendben nem vagyok biztos: r0...r3 és r12...15 (szerintem fordított a sorrend), ha ezeket felszeded, akkor még az NVIC-t nem kezelted..... Szerintem "phantom" megszakítással érdemes próbálkozni, mivel "phantom" megszakítást akárki generálhat, ez lehetséges a NVIC-ben, a magasabb IT- generál egy "phantom" megszakítást a ADC6+DMA IT-re plusz a egy FLAG-et, ennek hatására az magasabb IT lefutása után valószínűleg ez az IT fog jönni, teszteled a FLAG-t ha igen akkor gyorsan megcsinálod az átprogramozást és kész. Természetesen, ha szükséges az előző állapot menthető és a visszaállítás is megoldható. Az ST uC több fajta konverziós sorrend létezik, így megoldható akár független eseményre való konvertálás, akár négy előre programozott bemeneti csatornán... Persze közben megy a scan vagy szóló beállított konverzió...
"Bali Zoltán" <eltexto at freemail.hu> írta:
>Hali!
>
>Van egy DMA csatorna interupt-al. Alap esetben
>megy az ADC 6 csatornájának a mentése ezzel
>a DMA csatornával. Egy eseménykor, aminek a
>legmagasabb prioritású interruptja van, át kell
>programozni az ADC-t két csatornára és a DMA-t
>félbe szakítania, majd azt is az ADC két csatornához,
>meg más célterületre felprogramozni. Eközben még fenn
>állhat az alap eset szerinti, a magas prioritás miatt
>félbeszakított alap DMA interrupt, amire nincs szükség, sőt
>zavaró és komlpkálja a kezelést.
>
>Ki lehet ezt a magas prioritású it futásakor szedni
>valahogy stack manipulációval? Gondoltam valami POP-PUSH
>kombinációval, de nem látom át hirtelen a bukatókat.
>Ki kellene a futó IT exc. frame-jét szedni és menteni, majd az alatta
>levő exc. framet is persze csak beazaonosítás után, végül visszapakolni a mentett
>frame-et. Működhet ez? Vajon mennyi időmbe kerülhet ez?
>Vagy, egy frame memcpy a stacken lefele, gondolom a frame méret állandó,
>aztán a stack pointert arra állítani. Talán gyorsabb mint a push-pop.
>
>Köszi
>
>Üdv. Zoli
>
>
>
>
>-----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list