timer ve sony kumanda kullanımı_?

Başlatan mustafa_cmbz, 13 Mayıs 2009, 17:11:18

mustafa_cmbz

arkadaşlar timerler  açık vaziyette kesme etiketinde ır kumanda dan gelen dataları ıf ile şartlandırıp ayrı bir değişken tanımlayıp ona da kumanda dan gelen datalara göre  farklı bir değer atayıp ana programdan bu değişkenleri tekrar ıf ile şartlandırıp ledleri yakmaya çalışıyorum yanlız ya bir yerde hata var yada bu işin oluru yok...

yazdığım kod aşağıdaki şekilde:


Device = 16F628
Config INTRC_OSC_NOCLKOUT, MCLRE_OFF, LVP_OFF, WDT_OFF, PWRTE_OFF, CP_ALL, BODEN_OFF

ALL_DIGITAL = On                          
XTAL = 4 
CMCON=7
TRISB=0
PORTB=%00000000
On Interrupt GoTo kesme
OPTION_REG=%10000101
INTCON=%10100000

 SONYIN_PIN = PORTA.4                       ' Choose the port and pin for the infrared sensor
 Dim SONYIN_WORD As Word                     ' Create a WORD variable to receive the SIRC data
 Dim SONY_COMMAND As SONYIN_WORD.LowByte     ' Alias the COMMAND byte to SONYIN_WORD low byte
 
Dim B As Byte
Symbol LED_A=PORTA.7
Symbol LED_B=PORTA.6

Symbol LED_9=PORTA.3
Symbol LED_10=PORTA.2

Symbol UP=PORTA.1
Symbol DOWN=PORTA.0
Clear

'***************************
BASLA:
If B=10 Then PORTB=%1111111
If B=20 Then High LED_B
If B=30 Then High LED_B
GoTo BASLA
 
 
Disable
kesme:
                         ' Make all pins digital mode
While 1 = 1                                 ' Create an infinite loop
Repeat                     
SONYIN_WORD = SonyIn                     ' Receive a signal from the infrared sensor
Until SONY_COMMAND<> 255                   ' Keep looking until a valid header found
If SONY_COMMAND=1 Then B=10
If SONY_COMMAND=2 Then B=20  
If SONY_COMMAND=3 Then B=30 

Wend

INTCON.1=0
Resume
Enable
End



bu sorunu çözmek için ne yapmalıyım_?
sorun timer configlerinde midir yoksa dalgınlıkla bişeymileri mi atlıyorum..._?

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz

OG hocam cevabınız için teşekkür ederim....

OG hocam verdiğiniz programı inceledim fakat kumandadan gelen dataları çıkartma işi benim hazır kullandığım protokol gibi değil... birde basic'te yazılmış...

ben yaptığım denemeler sonucunda gördümki


Disable
kesme:
                         ' Make all pins digital mode
While 1 = 1                                 ' Create an infinite loop
Repeat                     
SONYIN_WORD = SonyIn                     ' Receive a signal from the infrared sensor
Until SONY_COMMAND<> 255                   ' Keep looking until a valid header found
If SONY_COMMAND=1 Then B=10   :   [B] high LED_B [/B]
If SONY_COMMAND=2 Then B=20 
If SONY_COMMAND=3 Then B=30

Wend

INTCON.1=0
Resume
Enable
End



koyu renk ile yazıdığım yerdeki LED_B YAK komutunu timer içerisinde  kumandadan gelen data doğrultusunda yakabiliyorum amma velakin değişkene atadığım değeri ana program vasıtasıyla İF ile şartlandırıp işleme tabi tutamıyorum...

ama kesme etiketinde IR protokolünün yerine buton şartlanması koyduğumda butona basıldığını algıladıktan sonra değişkene değer atayıp bu değişkenin değerini yine ır deki gibi ana programdan tekrardan işleme tabi tuttuğumda sonucunda istediğim işlemi yaptırabiliyorum....

bu aşamayıda geçtikten sonra yani protondaki hazır ır alım komutlarını inceleyek olursak burada bir kısır döngü gibi bişey var ve sanırsam bizim değişkenin ana program tarafından algılanmasını engelliyor....


OG hocam en son olarak sizin verdiğiniz programdaki bazı yerleri inceledim hatta denedim fakat sorun çözülmedi....verdiğiniz programı protona uyarlamaya çalıştım fakat yapamadım bazı değişkenlerde hata veriyor.....sizin programın alıcı kısmını protona çevirebilirmisiniz acaba_?

birde programı protona uyarladık diyelim yine aynı benim yazmaya çalıştığım gibi timer ile çalışırken sorun yaratmaz değilmi_?


aklıma son anda gelen birşeyi daha eklemek sormak istiyorum....timerde değişkeni dışarıya salmıyorsa ana programı timer içine alsak ır komutları denetleyen kısmı ana programın olduğu yere alsak yani yer değiştirsek bu değişken meselesini ortadan kaldırabilirmiyiz acaba_?

OG

O örneği yazıp uyguladığım zamanlar proton bilmiyor ve kullanmıyordum, o sebeple pbp. Proton'a başladıktan sonra da SIRC ile işim olmadı.

SIRC datayı almak için kesme kullanmana gerek yok. Programda dikkatini çekmek istedim, 0...9 arası tuşlar için gelen kumanda datasını düzeltmen gerekiyor.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz

protonda kendi sırc protokolüyle ufak bir deney yaptım gelen datayı değişkene atadıktan sonra değişkenleri if ile şartlandırdım ve 1 tuşu çalıştıramadım ayriyetten 7-8 aynı işlemi yapıyor...


hocam birde bu sırc data alma olayı kesme kullanmadan nasıl yapılır _?

OG

İlk bakış için gördüğüm PORTA içinde led için çıkış ataması yapmamışsın, devreyi dsn dosyası olarak yollarmısın.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz

hocam porta için çıkış ataması yapmadım çünki porta'da 2 tane led var diğerlerinin hepsi portb'nin tamamında bağlı bulunmakta...porta'da ır göz 2 buton ve pic'in 15nolu ayağında da bir tane led bulunmakta....

eğer çözemezsem devreye bir pic daha ilave edeceğim smd 12f675 ile ır gözden gelen datayı algılayıp çıkışa 1-0 olarak butonlara bağlantı yaptıracağım.... yanllız 12f675 i sadece ır için değil hem rf hemde ır kulllanılacak şekilde tasarlamayı düşünüyorum....maliyetli olacak ama sağlam olacak :D

nasıl olsa ledlerin animasyonları bitene kadar butona bassanızda algılamıyor bence bu şekilde olması daha mantıklı sadece 1 pic daha ilave edilecek maliyet artacak ama hiç olmazsa sorunsuz çalışan bir devre olmuş olacak....

iyi çalışmalar...

OG

Symbol LED_A=PORTA.7
Symbol LED_B=PORTA.6

Symbol LED_9=PORTA.3
Symbol LED_10=PORTA.2

?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz



LED_9 VE LED_10  animasyon yapan led grubunun son iki tanesi...

led_B ve led_A animasyon geçişlerinden kullanıcıyı bilgilendiren ledler... led_A kullanım dışı yanlız şemada yeni düzenlemeleri yapmadım...

bu sorunun porta ile ilgilisi varmı yokmu bilmiyorum ama kumanda protokolünü tek başına çalıştırdığımda porta'yı tanımlamadan da yakıp söndürüyor...aynı şey timer ile gelecek komutu beklerkende aynı şekilde gelen bilgi sonucunda kesme içinde led_b yi yakıyor ama değişkene gelen datanın sonucunda bir değer atayıp onu ana programda şartlandırıp sonucunda led_b dediğimde yakmıyor...anlamadım gitti....

OG

Alıntı yapılan: "OG"devreyi dsn dosyası olarak yollarmısın.
demiş
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.


OG

Yukarıdaki kodlar ile şema ilgisiz, yapmak istediğin işlem nedir?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz

hocam yukarıdaki kodlar ile şema alakasız değil yapmak istediğim şey ledler ile animasyon yaptıran devreye buton yerine ır kumanda kullanmak....animasyon kodlarını eklersem sayfa almayabilir ki onlarada gerek yok...iyi çalışmalar...

OG

Yapmak istediğin akışı bilmeden nasıl yardım edilebilir? Ne yapmamız gerekiyor?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mustafa_cmbz

ben sorunumu çözdüm hocam teşekkürler...iyi çalışmalar...