[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