[elektro] PIC megszakítás
Balla Zoltán
sdrlab at yandex.ru
Tue Jun 30 11:15:05 CEST 2009
From: "hg12345" <hg12345 at freemail.hu>
>Nem emlékszem, de kellett, a hiba akkor volt amikor valamelyik IT belszólt az engedélyezésbe.
>És csak low interrupt esetén, persze kétszintű IT kellett.
>C és talán a F452 volt ez a hiba, utána már nem. Én sajnos belefutottam 10-16 óranként egy IT
> >kimaradt és fejre állította a készüléket. Már csak halvány emlék.
>
Hm..., továbbra sem értem! Az a problémám ezzel, hogy logikai ellentmondásnak tűnik az, hogy
engedélyezni kell a GIE bitet, miközben az még le van tíltva, de van egy éppen befutó
megszakítás....
Szóval, valahogy nem kerek a logika számomra ebben...
De elmondom, miért merült fel egyeltalán a kérdés...
Szóval az áldozat egy 18F6520 amivel eddig semmi bajom sem volt. Most fejlesztek egy nullszériás
készüléket, amiből 22 db van most tesztelés alatt. Ebből a 22-ből 2 furcsán működik, eltérően a
többi 20 teljesen jól(vagy annak tűnő) működőtől....
A hiba az, hogy nem fut le az egyetlen megszakítás, vagy csak igen ritkán(de inkább nem).
Egyéb okok miatt a program strukturája: van egy főprogram melyből hívok egy nagyobb rutint. A rutin
előtt törlöm a GIE bitet, hogy ne zavarjon bele a rutin végrehajtási idejébe. Utána engedélyezem
azonnal. Majd watchdog törlés, és ujraindul a ciklus a GIE ujbóli törlésével.
Tehát effektív a megszakítás csak egy pillanatra van engedélyezve, igen nagy valószínüséggel már rég
bekövetkezik a megszakítási esemény ekkorra már, de itt ez a késleltetés nem lényeg...
Viszont ennek ellenére két példánynál ez nem akar végrehajtódni, az az nem fut le a megszakítás....
Önmagában viszont a pic működőképesnek tűnik, a főprogram fut gond nélkül, és van olyan üzemmódja,
ahol ez a megszakítás is megy benne.
A program C-ben van írva, és jelenleg még engedélyezett a 2 szintű megszakítás is, teljesen
fölöslegesen, mert csak az alacsony van ebből jelenleg használva, tehát, itt egyezés van az általad
említett esettel...
Zoli
More information about the Elektro
mailing list