Encoder Okuma !

Başlatan HeCToR, 17 Ocak 2016, 13:16:33

HeCToR

Merhaba Arkadaşlar ete Hocanın Paylaşmış olduğu kodları tam anlayamadım ccs yada mplab x çevirebilecek arkadaşlar olursa memnun olurum Saygılar.
Encoder:
ESKI=PORTB & %00000011
ZAMAN=0
DEVAM:
YENI=PORTB & %00000011 'burada aynı okumayı yeniden yapıyoruz ve ESKI den farklı bir durum elde etmeye çalışıyoruz.
IF YENI=ESKI THEN 
   ZAMAN=ZAMAN+1
    IF ZAMAN=100 Then RETURN  '100 defa yapmasına rağmen konum değişmemiş ise encoder dönmüyordur geri git.
    GOTO DEVAM
ENDIF

YON=Eski.0 ^ Yeni.1  'eski nin sıfır nolu biti ile yeninin 1 nolu bitini XOR yapıyoruz.
IF YON=0 then  'sonuç sıfır ise
  SAYI=SAYI+1
  IF SAYI=0 THEN SAYI=255
ELSE  'sonuç 1 ise
  SAYI=SAYI-1
  IF SAYI=255 THEN SAYI=0
ENDIF
RETURN
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

sadogan

#INT_EXT1
void harici1_isr()
{
    if(!input(pin_b0))
    {
      say--;
    }
    else
   {
      say++;
   } 
}
////////////////////////////////////
    bunlar main rutinde
    ext_int_edge(1,H_TO_L);
    disable_interrupts(INT_EXT1);

CCS de yaptığım cod bu RB1 kesmesini kullanıyor.
say değişkeninin içerici çevirme yönüne göre artar veye azalır.
say değişkenin limitlerini kontrol etmek gerekiyor.

HeCToR

@sadogan hocam yön kontrolünü nasıl yapacağım peki ?
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

sadogan

eksilirken ve artarken yönler faklı

HeCToR

RB1 Kesmesi kullanıyorsunuz Ama RB0 portunu okuyorsunuz değilmi
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

sadogan


HeCToR

@sadogan Hocam Teşekkürler Şu an Çalışır vaziyette Problem Yok
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir