serin2 komutu programımı engelliyor..

Başlatan enrique_iglesias, 13 Kasım 2008, 00:02:42

enrique_iglesias

arkadaşlar pwm ile motor sürüyorum ancak ufak bir problem var aşamadım...

ana program altında pwm pals sinyalleri ile motoru istediğim devirde çalıştırıyorum ancak serin2,rx,396,[wait("m"),alinan] olarak dışarıdan gelen veriye göre hareket ediyor...

Ama programım bu serin2 komutunda bekliyor :( ozamanda pwm ve bir çok satırlar çalışmıyor.açıkcası serin2 ve altındaki tüm satırlar veri gelene dek çalışmıyor....

basla:
serin2,rx,396,[wait("m"),alinan]
if alinan=1 then gosub prog1
if alinan=2 then gosub prog2
gosub isiolc
gosub basincolc
.
.
.
goto basla

ne yapabilirimki hem gelen sinyalleri kaçırmasın hemde programımı aksatmasın??? bir fikir bekliyorum arkadaşlar..kalın salıcakla...

OG

HPWM yani donanım pwm kullanmak gerekir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Tagli

Hatta bence seri iletişimi de dahili modülle yap. Pek çok PIC'te bu özellikler bulunuyor. Mesela 16F628...
Gökçe Tağlıoğlu

alayli

SERIN2 komutuna zamanaşımı parametresini de eklemen gerek. Programın bu haliyle seri data gelmediğinde (hatta datanın başında "m" gelmediğinde) serin2 de çakılması kaçınılmaz ve normal. Kodunu;

basla: 
serin2,rx,396,50,ZAMANASIMI,[/color],[wait("m"),alinan] 
if alinan=1 then gosub prog1 
if alinan=2 then gosub prog2
ZAMANASIMI: 
gosub isiolc 
gosub basincolc 
. 
. 
. 
goto basla


şeklinde değiştirirsen. Sorun hallolur. Burada "50" milisaniye cinsinden serin2 komutunun "m" karakterini beklemesi gereken süreyi tanımlar. Bu değeri 0 ile 65535 arasında değiştirebilirsin. ÖrneğiN serin2 nin "m" karakterini 50 ms değilde 1 saniye baklemesini istiyorsan bu değeri "1000" olarak değiştirmelisin. ""ZAMANASIMI" ise prograndaki geçerli bir dallanma etikerini temsil eder. Tanımlanan süre sonunda serin2 komutundan nereye dallanılacağını tanımlar.
Anca kazganmiş itmiş ilimiz törümüz erti. Türk Oguz begleri budun esiding. Üze tengri basmasar, asra yir telinmeser, Türk budun, ilingin törüngin kim artati? (udaci erti)

fofo

RF modullerde bu serin2 çakılma olayını nasıl çözeriz. Modülden gelen gürültü bu komutu kilitliyor.

enrique_iglesias

alayli dostum verdiğin kod için teşekkür ederim bende bu şekilde düşünmüştüm ama veriyi kaçırırım diye düşünmüştüm...bu mümkünmüdür..

OG

serin2,rx,396,50,ZAMANASIMI,[/color],[wait("m"),alinan]
de 50ms "m" içinmidir yoksa herhangi bir seri data içinmidir??
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

enrique_iglesias

Sayın OG evet normalde 50ms m içindi ancak fofo arkadaşımızın dediği gibi sanırım gürültü bu komutta çakılıp kalmasına neden oluyor....

Kafamda chipin pozisyonunu hayal ediyorum 50ms beklerken bir gürültü oluşuyor ve bu tekrar 50ms'ye dönüyor sürekli gelen gürültü bu bekleme sayacını sıfırladığını düşünüyorum....Bunu test için şöyle yaptım :

basla:
serin2 rx,396,50,gec,[wait ("m"),dec3 alinan]
goto basla
gec:
toggle portb.0
pause 100
goto basla


Bu şekilde 50ms saniye bekleme olursa ve gelmezse veri led yanıp sönüyor..ama gürültü olursa hiç yanmıyor.....

kendi çapımda 16f84'ü bunu engellemek için kullandım yani sırf gürültü yüzünden bir chip daha kullanıyorum 16f84 hep askıda kalıyor istenen veri geldiğinde asıl chipe veriyi transfer ediyor :)

Bunu bertaraf etmem lazım serinden sonraki komutlar çalışması gerek çok önemli bir konu benim için şimdiden teşekkürler...

OG

Uzun bir süre önce denemiştim, net değilse de oradaki 50ms süreyi herhangi bir seri data bekleme süresi olarak hatırlıyorum, "m" için süre veremiyordum, yanlışsa düzeltin.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

enrique_iglesias

evet evet doğru hatırlıyorsunuz ben m yi bir data olarak kastedmiştim...sonuçta 50ms m veya başka bir veriyi bekliyor..bu nedenle oluşan gürültüyü bir veri olarak kabul edip program çakılıyor sorunda bu zaten :(

mzeybek

ben de benzer bir durumu yaşıyorum.
eğer gürültüden kaynaklandığını düşünüyorsanız proteus da simulasyon ile sorunun kaynağını bulabilirsiniz diye düşünüyorum.

başka bir pic le rf modülden veri beklediğiniz girişe beklediğiniz sinyali uygularsanız sonuç nasıl olur acaba. nasılsa proteus da gürültü yok.
UcAnTuRk

enrique_iglesias

evet proteus'ta hiç gürültü yok sinyalleri ölçmeme rağmen ve bunu tespit etmek için yazdığım programların hepsinde gürültü olduğunu çözdüm ama yaptığım filtreler bile bir işe yaramadı.....umarım bu sorunu çözen birisi çıkar...

Cenk_Unur

Merhaba,
Ben bir projemde şöyle bir sistem kurmuştum;
seri iletişide alıcı bölümünü ayrı bir pic kullandım gelen her komut için bir çıkış tanımladım. Bunlarıda asıl işi yaptırdığım pic e  bağladım.