[elektro] PIC 16 bit megszakítás

hg12345 hg12345 at freemail.hu
Sat Nov 1 18:02:38 CET 2014


Hi,

Amúgy kicsit sánta ez elgondolásod, hiszen amíg nem töltöd fel a FIFO-t addig törlés után automatikusan újra bebillen, csak töltés után érdemes törölni a IT kérelem jelző bitet, ha statikusan működik ez a kérelem.
A fenti probléma miatt az is előfordulhat, hogy az elején törlöd a IT kérelmet, mire az automatikusan vissza áll jogosan, majd feltöltöd a FIFO-t de az IT már megint újra ott jelez, így akár kétszer (sokszor) is meghívhatja....

- Tesztelési céllal, az IT elején nyomj a globális IT tiltást, majd a végén egy engedélyezést.
- Van egy egymásba ágyazás tiltó bit a NSTDIS, ha ezt bebillented, akkor futó IT alatt más IT nem lehetséges, csak az induláskor tudnak versenyezni az IT :-)





"Zoltán Balla" <sdrlab at yandex.ru> írta:
>Sziasztok!
>
>Adott egy 16 bites DsPIC környezet. Van egy megszakítás, a soros port 
>adására, mely szerint ha kiürült a FIFO, megszakítást generál. Ekkor a 
>kiszolgáló rutin inkrementál egy tömböt cimző index változót, ha az 
>kisebb, mint a max érték, és újabb byte-ot helyez a FIFO-ba. A flag 
>törlése a megszakításkezelő elején történik.
>A tünet a következő: minden tömb(adat) küldése inicializálásakor az 
>index nem incrementálódik, az az ugyanazt az indexű byte-ot küldi el 
>mindig konzekvensen.
>Elemezve az egyetlen értelmes feltételezés az volt, hogy mivel a rutin 
>elején van törölve a flag, így a megszakítási feltétel újra fennáll, és 
>azonnal belép újból a kiszolgáló rutinba. Így még az index 
>inkrementálása előtt mégegyszer bekerül a FIFO-ba ugyanaz a címzett 
>byte. Az utána következő adatok már jól mennek, végig.
>A kérdésem az, létezik az, hogy beléphet ugyanabba a megszakításkezelőbe 
>úgy, hogy még az előző nem lett kiszolgálva ? Emlékeim szerint, mintha 
>hardveres tiltás kéne, hogy legyen addig, amíg ki nem lép a megszakítási 
>rutinból... Vagy ez csak a 8 biteseknél volt így ?
>
>Zoli
>
>-----------------------------------------
>          elektro[-flame|-etc]
>



More information about the Elektro mailing list