Pic ile encoder sinyallerini saydırmak

ben olsam ne yapardım? (Basic bilmediğim için sadece anlatmakla yetiniyorum) TMR0 kesmesini ayarlar harici CLK ucunu aktif eder bu uca TTL seviyesine düşürülmüş Encoder A palsini girerdim.

1 palste 1 kesme oluşacak şekilde ayarlardım. bu kesme içinde de 2. bir ayağa girdiğim B palsinin durumuna bakardım bu durum bilgisi artırmamı yoksa eksiltmemi yaptıracak bunu belirlerdim.

her kesmede belirlediğim sonucu bir registere aktarırdım. sonuç olarak bu register benim konum bilgim olurdu.

Tabi bunu basic diline dökmek lazım donanım basit.

Kolay gelsin
 
Bir pic var ve sen kapı sıkıntısı çekiyorsun. :)

Aşağıdaki ifade :
Basit bir açıklama olacak fakat sanırım böylesi daha anlaşılır olur:
a=1 olduğu anda b=1 ise , bir yöne
a =1 olduğu anda b=0 ise, diğer yöne dönüyor demektir.

PBP da :
ESKI=PORTD & %00000011 ' port d okunur
SAYICI:
YENI=PORTD & %00000011 'port d tekrar okunur
IF ESKI=YENI then SAYICI 'değişiklik var ise
YON=A^B 'a ve b kapısı exor lanır (senin kapılarla yaptığın şey)
SAY=SAY+(2*yon)-1 'yön bilgisinin işaretine göre SAY değişkeni değişir
şeklinde yazılabilir.

Aynı şekilde kapıları izleme C dili ile :
if (En1!=n1)
{
if (En2==n1)
{
Enkoder--;
}
else
{
Enkoder++;
}

Şeklinde yapılabilir.


Lcd gösterimi yerine YON işareti temel alınarak yönlendirilecek bir port low ve ya high yapılabilir.
Aynı şekilde ilk okuma ve 2. okuma da değişiklik yoksa (if ... then ile ) bir port low ya da high yapılarak durup durmadığı anlaşılabilir.
 
ESKI=PORTD & %00000011 bu komut ne anlama gelio aradaki & ne

YON=A^B a ile b arasındaki şey ne

pic basic te encoder çalıştırma mantığını anlatabilcek babayiğit yokmu beaa :'( :'( :'( :'( :'( :'(
 
:D anlatan çok ama anlayacak babayiğit aranıyor ::)
 
ya musallim ben kapı sıkıntısı çekmiyorum kapıları zaten ben prog un içinde yapmaya çalıştığımı belirttim. pic varken bisürü kapı entegreleriyle uğraşacak da çok vaktim yok ztn. orda & (ve) yi sormamın sebebi benm basic i öğrendiğim kitapta VE yi detaylı açıklamamış ve kitapta sennkine benzer bi kısım yok. kitap ismi sorarsanız orhan altınbaşak ın kitabı. yani acemi olduğumu belirtmeye çalışıorum. sizde üstü kapalı açıklıosunuz bende doğal olarak anlamıorum :-*
 
Öğrendiğin kitap çok eski.Yazarı bunu kabul ediyor ve yeniden yazdı.O zaman f84 idi şimdi f877 üzerine daha bir oturmuş bilgilerle yeniden yazdı...
PBP ile devam edeceksen ki öyle anlaşılıyor , yukarıda örneği verdiğim kaynağı ki senin verdiğin linkteki kişide aynı,iyi izlemelisin.
Çok iyi bir öğreticidir.Pic programlamayı sevdirir.C zahmetli ve alt yapı gerektirir.ASM , kullandığın elemanı çok iyi bilmeyi gerektirir ve uzun uzun yazdırır(ama sonuçta her derleyici onu kullanır).
PBP ve özellikle @ete nin anlatımı insanı heveslendirir tabiri caizse gaza getirir ve o hızla ilerlersin.
Bir çok forumda bıkıp usanmadan soruları cevaplar.Bu tip insanlar toplumumuz için büyük şans Allah razı olsun.

Şimdi ricam enkoderi kısa bir süre bir kenara bırak ve öncelikle pbp yu verimli bir şekilde kullanmayı dene.Kaybettiğin vakti sana fazlası ile kazandıracaktır.
Linkte @ete hocamın derslerinden derlemeler var.Asıl dosyaları internette bulabilirsiniz,içerisinde her bölümün ve deneyin proteus dosyaları da var.
Word deki "aritmetik operatorler" de & ^ ve diğerleri ne işe yarar açıklanıyor.

Edit : Bu arada Orhan Altınbaşak ın pic basic pro ile pic programlama kitabını tam olarak okudunmu ?
Tekrar kontrol et eğer 65. sayfa yoksa yollayabilirim. ::)
 

Ekli dosyalar

  • Pbp ETE.rar
    711.1 KB · Görüntüleme: 38
tamam encoder i plc ile hallederim sorun değil. şimdi bu yeni çıkan kitabın 877 üzerine olanın ismi nedir. onu yazarsanız sevinirim. ben onu bi denizli piyasasında araştıryim.


65. sayfayı okumuştum ama pek açıklayıcı gelmedi. yani biraz empati kurarsanız bilmeyen bi kişi için nasıl olduğunu anlarsınız.

misal o sayfada bir örnek:

B0 = B0 & %00000001 ' B0 ın 0.bitini maskeler

bu sizin yazdığınız programdakinden farklı değil. ben bu örnekten bi mantık yürütemedim. burda bi & işareti ne amaçla kullanılmış eğer VE kapsının görevi amacıylaysa girişler çıkışlar hangisi, ve neden maskeliyo gibi bilmeyen bi kişi böyle soruların içinde kalıyor bunun gibi. mesela bu komuta yorumum Ve kapısının girişlerindn biri B0 diğer girişi de 0.bit eğer ki böyleyse çıkış nerde ;D orda başka bi değişken veya bit'de göremedim. bunun gibi yani

Pbp Ete dosyasını inceledim gerçekten güzel anlatım. paylaşım için teşekürler
 
Altaş yayınları diye aratırsan baş sayfa da yeni diye gözüküyor.
Aritmetik işlemler için bundan fazlasına ihtiyacın var.Boolean , karnaugh,sayı sistemleri, register gibi kavramlar gerekli.

Benzeri forumda bir arkadaşımız imzasına yazmış , muhtaç olduğun kudret helplerde mevcuttur diye.
Bir tane daha , insanlar 10 çeşittir binary saymasını bilenler ve bilmeyenler. :eek:

Azıcık sitem edeyim,word u iyice okudunmu s15 aritmetik işlemlerin hemde senin sorduğunun açık anlatımı vardı.Zaten önceki anahtar kelimelerin bulduracağı linkler de çalışan örnekler de vardı ya hadi neysee.

Empathy = kendi geçtiğim yolları hatırlama mışş olsa idim buraya kadar gelirmiydik ?

Pbp için yeni versiyonu yüklemiştim yararı olacaktır.(mcsp 3.0.0.5+pbp2.50a)

Hadi bir gıcıklık daha yapayım.(önceki kodların öncesinde bunlar vardı )

Kod:
@ DEVICE pic16F877, HS_OSC,WDT_OFF,PWRT_ON,CPD_OFF
@ DEVICE pic16F877, LVP_OFF,PROTECT_OFF,BOD_OFF

Define LCD_DREG PORTD
Define LCD_DBIT 4
Define LCD_RSREG PORTD
Define LCD_RSBIT 2
Define LCD_EREG PORTD      
Define LCD_EBIT 3
'###############################################
'CMCON=7         'komparatör iptal
OPTION_REG.7=0      'Dahili pull-up lar aktif

LCDOUT $FE,1      
'###############################################
ESKI var BYTE
YENI var BYTE
YON var BYTE
SAY var word
SAYI VAR word

CLEAR
'###############################################
SAYICI:          

ESKI=PORTD & %00000011  'oku PORTD.0 PORTD.1
PAUSE 2           
YENI=PORTD & %00000011  'oku PORTD.0 PORTD.1

IF ESKI=YENI then
GOTO SAYICI
ENDIF
ESKI=ESKI & %00000001  'sadece PORTD.0 ı oku
YENI=YENI>>1       'sadece PORTD.1 ı oku
YON=ESKI^YENI      'PORTD.0 XOR PORTD.1

IF YON=1 then
  SAY=SAY+1   'yukarı        
ELSE
SAY=SAY-1   'aşağı            
 
ENDIF
   LCDOUT $FE,$80," SAYI : ",DEC5 SAY
     
GOTO SAYICI
 
ibrahim_89 ' Alıntı:
:'( :'( ama olmuyor durduğunu nasıl bildiricem pic e :'( :'(

tyildizdak arkadaşın örneğinden yola çıkaraktan bişiler çizdim.

mesela

A ile B yi VE kapısına verdim
A ile B den ek aldım "ÖZEL VEYA" Kapısına verdim.

ama encoderin sabit kaldığını nasıl bildirebilirim pic e????? :-\

ilk etapta her girişi sürekli kontrol edersin. Eğer girişlerde herhangi bir değişiklik yoksa bunu sürekli döndürürsün. Yok herhangi bir değişiklik varsa hangisinde değişiklik olduğunu sorgularsın. Oda tamam ise diğerinin değerinide kontrol edersin. Bu duruma göre hem hareket halinde olduğunu anlarsın hemde yönün tespi etmiş olursun. Elimde böyle bir program vardı ama bulamadım tekrar senin için yazar gönderirim istersen. ASM veya PBP her ikisinide gönderirim kısa bir süre sonra....
 

Forum istatistikleri

Konular
128,163
Mesajlar
915,578
Kullanıcılar
449,922
Son üye
11akif

Yeni konular

Çevrimiçi üyeler

Geri
Üst