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