Re: Obsluha vnějšího přerušení u PIC
Tomáš Hamouz
hamouz na alsoft.cz
Pondělí Říjen 25 08:58:14 CEST 2010
Myslím že jste si odpověděl sám.
Zákmity trvají řádově jednotky až desítky milisekund a s tím je nutno
v programu počítat.
Ošetření tlačítek, psané přímo pro PIC:
http://www.dattalo.com/technical/software/pic/debounce.html
K ošetření 8 tlačítek stačí 12 instrukcí a 2 pracovní registry.
Tomáš
KL> Dobrého večera přeji.
KL> Při pátku bych poprosil nějakého rutinéra aby mi zkusil naznačit co dělám blbě.
KL> 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á.
KL> HW:
KL> do GPIO2 jsem zapojil mirkospínač k 0V a nakonfiguroval pullup.
KL> na GPIO0 je výstup pro LED přes odpor k +5.
KL> Ostatní vstupy nehrají roli.
KL> SW:
KL> Abych si (vyloženě z cvičných důvodů) ověřil že podprogram ISR
KL> funguje dobře, tak v obsluze invertuju registr temp1(ř.65) a tím
KL> pak přepisuju porty GPIO(ř.46) - LEDka by měla na každé kliknutí změnit stav.
KL> Na vstupu GPIO2 jsou od mikrospínače odskoky v délce asi 400 us.
KL> Tak jsem si řekl, dobrá - při prvním sepnutí se zakáže přerušení a
KL> povolí se až po zpoždění 2 ms. Jenže to nefunguje - na mikrospínač
KL> klofu jak zběsilý a občas to přepne.
KL> Když zpoždění zvýším na 200 ms (ř.68 - movlw 0) tak to vcelku pravidelně přepne po dvojkliku.
KL> Ale pokud ošetřím vstup kondenzátorem (odskoky podle osciloskopu
KL> zmizí) funguje to tak jak chci (na každé kliknutí se překlopí) i bez zpoždění.
KL> No jo, jenže já chci ty odskoky ošetřit programem a ne kondenzátorem.
KL> Mohl byste někdo, pro koho je tohle denní rutina říct, kde dělám
KL> chybu ? Případně se podělit o obsluhu přerušení od odskakujícího spínače po vašem ?
KL> Jelikož se programováním bavím občas po večerech a za týden vše
KL> zapomenu, je ten program až infantilně komentovaný - ale já to tak potřebuju...
KL> Díky za trpělivost...
KL> <<int.asm>>
KL> Kručinský
Další informace o konferenci Hw-list