Obsluha vnějšího přerušení u PIC

Kručinský Ladislav ladislav.krucinsky na linde-mh.cz
Pátek Říjen 22 21:42:09 CEST 2010


Dobrého večera přeji.
Při pátku bych poprosil nějakého rutinéra aby mi zkusil naznačit co dělám blbě.
Chci si ověřit, že program pro obsluhu vnějšího přerušení dělá to co chci já a zatím to nedopadá.
HW: 
do GPIO2 jsem zapojil mirkospínač k 0V a nakonfiguroval pullup.
na GPIO0 je výstup pro LED přes odpor k +5.
Ostatní vstupy nehrají roli.
SW:
Abych si (vyloženě z cvičných důvodů) ověřil že podprogram ISR funguje dobře, tak v obsluze invertuju registr temp1(ř.65) a tím pak přepisuju porty GPIO(ř.46) - LEDka by měla na každé kliknutí změnit stav.
Na vstupu GPIO2 jsou od mikrospínače odskoky v délce asi 400 us. Tak jsem si řekl, dobrá - při prvním sepnutí se zakáže přerušení a povolí se až po zpoždění 2 ms. Jenže to nefunguje - na mikrospínač klofu jak zběsilý a občas to přepne.
Když zpoždění zvýším na 200 ms (ř.68 - movlw 0) tak to vcelku pravidelně přepne po dvojkliku. 
Ale pokud ošetřím vstup kondenzátorem (odskoky podle osciloskopu zmizí) funguje to tak jak chci (na každé kliknutí se překlopí) i bez zpoždění.
No jo, jenže já chci ty odskoky ošetřit programem a ne kondenzátorem. 
Mohl byste někdo, pro koho je tohle denní rutina říct, kde dělám chybu ? Případně se podělit o obsluhu přerušení od odskakujícího spínače po vašem ?
Jelikož se programováním bavím občas po večerech a za týden vše zapomenu, je ten program až infantilně komentovaný - ale já to tak potřebuju...
Díky za trpělivost...

 <<int.asm>> 

 Kručinský

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20101022/2ca38251/attachment.htm>
------------- další část ---------------
A non-text attachment was scrubbed...
Name: int.asm
Type: application/octet-stream
Size: 3607 bytes
Desc: int.asm
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20101022/2ca38251/attachment.obj>


Další informace o konferenci Hw-list