Pic Basic megszakítás!HELP

Krakker Mate deadflowes at gmail.com
Fri May 12 19:59:44 CEST 2006


No, a PicBasic-hez nem konyítok, de azért csak beleugatok :)

Idézet a datasheet-ből:
"For the device to wake-up through an interrupt event, the corresponding 
interrupt enable bit must be set (enabled). Wake-up is regardless of the 
state of the GIE bit. If the GIE bit is clear (disabled), the device 
continues execution at the instruction after the SLEEP instruction. If 
the GIE bit is set (enabled), the device executes the instruction after 
the SLEEP instruction and then branches to the interrupt address 
(0004h)." [Special feature of the CPU / Power down mode(SLEEP)]


Azaz. A GIE-re érzéketlen a SLEEP állapotból való felébredés, ha a 
vonatkozó bit (RBIE,  INTE, stb.) 1-ben van, akkor ő már élesztheti a 
procit a szundiból.
Mindazonáltal, ha GIE==1 (az elején INTCON<7>=1, tehát beállítottad), 
akkor megszakítás-kérelem esetén sorrendben:
 (0, proci felébred)
 1, a vonatkozó bit (pl RBIF, INTF, stb.) átmegy 1-be iziben
 2, a proci elmászik a megszakítás-vektorra
 3, mivel a vonatkozó megszakítás-jelző bit 1-ben van és nincs lepucolva 
soha a büdös életben, ezért az idők végezetéig a megszakításvektorra fog 
ugrálni szerencsétlen proc és mást nem is csinál.

Szerintem ez van, csak nem tudod megkülönböztetni, hogy a proci 
SLEEP-ben vagy vagy csak nem csinál semmit. Árammérővel esetleg 
detektálható.

Megoldás #1: GIE = 0-ba célszerűen, ha nincs más megszakítás
Megoldás #2: Megszakítás rutinban figyelni a megszakítás-biteket és 
nullázni őket azonnal.

Üdv,
 Máté

Peter Pavai írta:
> Üdv Szakik!
>
> Adott egy Pic-es kapcsolás és telepről üzemelne!
> És a SLEEP funkció tök jó lenne. Le megy Sleep-be de nem tudom
> megszakítással felébreszteni!
> Esetleg valakinek nincs egy mintája?
> Biztos hogy én vagyok a láma de nem tudok rájönni mi a probléma!
> Tudnátok segíteni?
> Elküldöm a progit
>
> Péter
>   

-- 
_m.




More information about the Elektro mailing list