[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