Re: Incremental Encoder lekezelése
Kardos Péter
chiplev at freemail.hu
Fri May 20 14:35:52 CEST 2005
Sziasztok!
Mindenkinek köszönöm aki segített a múltkor, végre sikerült egy elfogadható
encoder lekezelést írni a Phier Incremental Encoderre.
Pintér Dezső programja volt az alap ami nagyon jól működik, de nekem még
jobb kellett. Átírtam hogy megszakításból is jól működjön. A encodert még
kiegészítettem a katalógos szerinti test circuit áramkörrel, de 10nf helyett
100nF-ot használok. A PORTB felhúzó ellenállásai ki vannak kapcsolva, nem
kellenek.
És íme itt a program:
if((RBIF)&&(RBIE))
{
RBIF=0;
new = PORTB&0x30;
if (old!=new)
{
if(0x20&(new^(old<<1))) {c_red++;}
else {c_red--;}
old = new;
}
}
Üdv:
Kardos Péter
----- Original Message -----
From: "Pintér Dezső" <skandi at t-email.hu>
To: "Kardos Péter" <elektro at tesla.hu>
Sent: Tuesday, May 03, 2005 3:25 PM
Subject: Re: Incremental Encoder lekezelése
> Hello Kardos,
>
> Én pic-re assemblyben ezt használom.
> Négyszeres felbontás, 3 byte-ot számol.
> Igaz nem megszakításból, így viszont 80 kHz-ig jó.
> Ha nagyon pontos kell, akkor kell két d-flop a bemenetekre.
>
> ------------------------
> dgomb:
> movf porta,w
> andlw 3
> movwf new
> movwf temp
> xorwf old,w
> btfsc status,z
> return
> ;
> bcf status,c
> rlf old,f
> movf new,w
> xorwf old,f
> btfsc old,1
> goto felszam
> ;
> decf pos_l,f
> movf pos_l,w
> xorlw 0ffh
> btfss status,z
> goto endgomb
> decf pos_m,f
> movf pos_m,w
> xorlw 0ffh
> btfss status,z
> goto endgomb
> movf pos_l,w
> xorlw 0ffh
> btfsc status,z
> decf pos_h,f
> endgomb:
> movf new,w
> movwf old
> return
> felszam:
> incfsz pos_l,f
> goto endgomb
> incfsz pos_m,f
> goto endgomb
> incf pos_h,f
> goto endgomb
>
> --
> Best regards,
> Pintér mailto:skandi at t-email.hu
>
> -----------------------------------
> Szponzorunk: http://tonerbolt.hu/
>
More information about the Elektro
mailing list