RF kumanda

Başlatan zeynal, 19 Haziran 2012, 15:44:43

zeynal

Merhaba arkadaşlar.Bir araba modeli için RF kumanda yapmak istiyorum.Ekteki küçük programı yazdım.Fakat verici kısmı çalışıyor ,alıcı kısmında sıkıntı var.Veriler düzgün iletilmiyor.Yardımçı olursanız sevinirim.Teşekkürler

ete

#1
Baud rate parametren her iki programda da yanlış. Ayrıca word değişkenlerini 2 byte halinde yollaman gerek.
Vericde aşağıdaki komutu kullan.

SEROUT PORTA.0,T9600,["RZ",ANAMOTOR.byte1,ANAMOTOR.Byte0,SERVO1.BYTE1,SERVO1.BYTE0,SERVO2.BYTE1,SERVO2.BYTE0,VERI]

ALıcıda ise aşağıdaki komutu kullan.
SERIN PORTA.0,T9600,["RZ",ANAMOTOR.byte1,ANAMOTOR.Byte0,SERVO1.BYTE1,SERVO1.BYTE0,SERVO2.BYTE1,SERVO2.BYTE0,VERI]

Ete

zeynal

Merhaba ETE bey.Cevabınız için teşşekür ederim.Yazdıklarınızı uyguladım.Simulasyonda yine çalışmadı.

ete

Evet çalışmıyacak çünkü SERIN-SEROUT pek bu iş için uygun değil. Yerine aşağıdaki komutları kullan.

SEROUT2 PORTA.0,84,["ETE",ANAMOTOR.BYTE1,ANAMOTOR.BYTE0,SERVO1.BYTE1,SERVO1.BYTE0,SERVO2.BYTE1,SERVO2.BYTE0,VERI,10,13]

SERIN2 PORTA.0,84,[WAIT("ETE"),ANAMOTOR.BYTE1,ANAMOTOR.BYTE0,SERVO1.BYTE1,SERVO1.BYTE0,SERVO2.BYTE1,SERVO2.BYTE0,VERI]

Bunların yanı sıra, her iki programa açılış gecikmesi olarak Pause 300 değerini ver. Bu gecikme registerlerin yerleşmesi için gereklidir. Gecikmeyi değişken tanımlamasından hemen sonra verebilirsin.

Diğer bir konu da Servo motora aşağıdaki şekilde komut vermen daha uygun olur.
PULSOUT SER1,(SERVO1/10)
veya
PULSOUT SER2,(SERVO2/10)

bu durumda servo için verdiğin
SERVO1=1
Pause SERVOx
SERVO=0
satırlarını tamamen silmen gerekiyor.

Simulasyon devresinde işlemci frekanslarını 1 Mhz de bırakmışsın. Onları da düzelttim.
Çalışan sisteme ait bütün dosyaları ilişikte yolluyorum. Onları dene bakalım.

Ete

zeynal

ETE bey çok teşekkür ederim.Çok yardımcı oldunuz.Bir ricam daha olacak.Alıcıda Porta.4 den çıkış alamıyorum.Bırde A portuna gelen VERI değışkeni çıkışları kapatıyor.Yani Porta.1=1 ise Porta.2 nin bir olduğunda PortA.1=0 oluyor.Teşekkürler

ete

PortA.4 pini open collector dür. Yani çıkışı veren transistörün collector (çıkış ) bacağı hiç bir yere bağlı değildir.
Dolayısıyla HIGH çıkartamaz. Yalnızca LOW (GND) verebilir. O pinin High çıkarabilmesi için bir pullup direncine ihtiyacı vardır. Led yakacaksanız O bacağa 330 Ohm ile bir pullup bağlayın.

Veri değişkeni ile ilgili yazdıklarını anlamadım. Yazdıklarınla ilgili komutlar programda yer alıyor. Çalışmıyormu yada veri kısmı görev yapmıyormu? Nedir sorun onu açıklarsan sevinirim.

Ete

zeynal

ETE bey.Alıcı kısmında yer alan komutlar:
IF VERI=2 THEN
TOGGLE C1
ENDIF
IF VERI=4 THEN
TOGGLE C2
ENDIF
IF VERI=8 THEN
TOGGLE C3
ENDIF
IF VERI=16 THEN
TOGGLE C4
ENDIF

VERI=2 olursa C1 çıkışı 1 ise 0,0 ise 1 olmalı.Fakat olmuyor,1 kere TOGGLE yapıyor.İkinci sıkıntı:VERI=4 veya 8 veya 16 olduğunda çıkış veren port durum değişiyor.Yani porta.1=1 olduğunda VERI=4 olsa porta.1=0 ve porta.2=1 oluyor.Teşekkürler

ete

Verici isimli programda BASLA satırından hemen sonra,
VERI=0 
şeklinde bir satır var. O satırı tamamen sil istediğin olur.
Sİmulasyonda olsa ledlere mutlaka seri 220 Ohm direnç bağlamalısın. PORTA.4 de seridirenç olmayacak yalnızca pine bağlı 220 ohm luk pullup direnci olacaktır.

Ete

zeynal

Çok teşekkür ederim

Powered by EzPortal