Pripojenie tlačítok a ošetrenie zákmitov

Z Kiwiki
Verzia z 21:46, 16. august 2010, ktorú vytvoril Juraj (diskusia | príspevky)
Skočit na navigaci Skočit na vyhledávání


Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

Ako vstupy možno ku GPIO pripájať aj tlačítka a iné kontaktné el. komponenty. Problémom pripojenia takýchto komponentov je, že vytvárajú zákmity spôsobené pružnosťou kontaktov, znečistením kontaktných plôch atď. Riešenie potlačenia zákmitov môžu byť:

  • Hardverové
  • Softverové

Príklad - Počítanie stlačení tlačitka

Pomocou tohto príkladu sa dá prakticky dokázať zakmitávanie tlačítka. Port1[3] je nastavený na Pull Down.

        ...
        mov reg[PRT1DR],0
        mov [COUNT],0
Loop_0: tst reg[PRT1DR],%00001000   ; wait for '1'
        jz Loop_0      
        inc [COUNT]
        ;[COUNT] -> LCD Display
Loop_1: tst reg[PRT1DR],%00001000   ; wait for '0'
        jnz Loop_1     
        jmp Loop_0
Zakmit.jpg
Zákmity tlačítka a skoky v programe

Hardverové potlačenie zákmitov

  • Ošetrenie zákmitov RC členom - vyžaduje presné stanovenie konštanty Cx*Rp
RC tlac.jpg
Ošetrenie zákmitov pomocou RC člena
  • Ošetrenie zákmitov pomocou RS klopného obvodu
RS KO.jpg
Ošetrenie zákmitov pomocou RS klopného obvodu

Softverové potlačenie zákmitov

Po každej zmene stavu pinu ignorujeme stav spínača po určitú dobu (napr. 25 msec - vyžaduje určenie vzhľadom k typu spínača a pod.)

        ...
        mov reg[PRT1DR],0
        mov [COUNT],0
Loop_0: tst reg[PRT1DR],%00001000   ; wait for '1'
        jz Loop_0      
        inc [COUNT]
        ;[COUNT] -> LCD Display
        call Delay25msec
Loop_1: tst reg[PRT1DR],%00001000   ; wait for '0'
        jnz Loop_1
        call Delay25msec     
        jmp Loop_0