18f4550 rotary encoder okuma

Başlatan kont, 11 Temmuz 2016, 13:30:08

görkem

#bit a=yeni.6 yerine #bit a=eski.6 kodu yazmanız gerek büyük ihtimal bu yüzden say değişkeni 1 0 görüyorsunuz 
Bir hata daha var oda programın başlangıcında portu okumanız gerekiyor onu atlamışsınız  eski=portb & 0x0c bunu lcd init in önüne ekleyin. Say değişkenini takip etmeniz gerekiyor ilk olarak  artı yöne saydırın tek tek sayması gerek

kont

Görkem Hocam çook teşekkür ediyorum sağolasın artı verisi yönde sayma yapıyor çok teşekkürler.  Tek maruzatım var hocam 128 e kadar sayıyor sonra eksi 128 olup azalma yapıyor bunun nedeni nedir

kont


mehmet

"say" değerini artırmazsınız kesme içinde; sadece +1/-1
değeri verirsiniz yön durumuna göre. Bunu da başka bir
değişkene ilave edersiniz. Kontrol edeceğiniz değişken
büyüklüğüne göre de sınırlama yaparsınız.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

görkem

Öneml değil. Kesme içinde yön bilgisi zaten elde ediliyor ona göre artı veya eksi sayma yapıyor.say değişkeni signed int8 olarak tanımlanmış ise bu şekilde olabilir. Encoderin bir turda verdiği toplam palste önemli ona göre değişkeni 32 bit 16bit yapmanız gerekebilir

kont

Hocam ilginiz için çok teşekkür ederim gerçekten uzun zamandır arayış içindeydim. 16 bit yada 32 bit değişken tanımlamak için unsigned int16/32 yazma yeterlimi.

görkem

Önemli değil. Evet doğru dediğiniz fakat bi ayrıntı var şöyle örnek veriyim unsigned int8 dediğinizde 8bit işaretsiz sayılar  0-255 arası,
signed int8 8bit işaretli sayılar -128 ile +128 arasıdır