[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