avatar_furkan41

PİC BASİC PRO SERİ İLETİŞİM ALGORTİMA SORUNU

Başlatan furkan41, 27 Mayıs 2017, 20:29:33

furkan41

başlıktada belirttiğim gibi alıcı verici devresi kurdum alıcı devresi kendi icinde bir kacç işlem daha yapmalı kumandadan okuduğu verileri yapıyor ama ilk koşulda takılıp kalıyor sonra ne geri dönüyor nede devam ediyor. biraz tecrübesizim yeni başladım diyebilirim ama beni bu sorun cıldırttı.


'**********************DEĞİŞKENLER_ATAMALAR_SİGORTA_AYARLARI********
'PIC16F84A
'4 MHZ XT
'LCD EKRAN MESAJ GÖSTERGELİ

@ __config _XT_OSC & _PWRTE_ON & _WDT_ON & _CP_OFF
DEFINE LCD_DREG PORTB 'LCD data bacakları PortB de bağlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RSREG PORTB 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 2 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
pause 200
TRISB=%00000000
TRISA=%11111111
PORTB=0
PORTA=0
SYMBOL USA = PORTA.0
SYMBOL ASA = PORTA.1
SYMBOL SENSOR = PORTA.2
SYMBOL GIRIS = PORTA.3
SYMBOL MI = PORTB.0
SYMBOL MG = PORTB.1
GELEN VAR WORD
GELEN = 0

'**************************ANA_PROGRAM_BASLANGICI*********************

BASLA:
SERIN2 GIRIS,396,[WAIT("EYM"),GELEN]
IF ( ASA = 1 ) AND ( GELEN = 41 ) THEN
GOSUB KEPENK_ACILIYOR
ENDIF
IF ( USA = 1 ) AND ( GELEN = 61 ) THEN
GOSUB KEPENK_KAPANIYOR
ENDIF




'****************************ALT_PROGRAM_BASLANGICI******************
KEPENK_ACILIYOR:
LCDOUT $FE,$1
LCDOUT $FE,$2, "GARAJ ACILIYOR.    "
LCDOUT $FE,$C0, "BEKLEYINIZ...     "
MG = 1
IF USA = 1 THEN
LCDOUT $FE,$1
LCDOUT $FE,$2, "GARAJ ACILDI  "
LCDOUT $FE,$C0, "IYI GUNLER      "
MG = 0
ENDIF
RETURN



KEPENK_KAPANIYOR:
LCDOUT $FE,1
LCDOUT $FE,$2, "GARAJ KAPANIYOR     "
LCDOUT $FE,$C0, "BEKLEYINIZ...      "
MI = 1
IF ASA = 1 THEN
LCDOUT $FE,1
LCDOUT $FE,$2, "GARAJ KAPANDI       "
LCDOUT $FE,$C0, "IYI GUNLER         "
MI = 0
ENDIF
RETURN


Hattuşa

'**************************ANA_PROGRAM_BASLANGICI*********************

BASLA:
SERIN2 GIRIS,396,[WAIT("EYM"),GELEN]
IF ( ASA = 1 ) AND ( GELEN = 41 ) THEN
GOSUB KEPENK_ACILIYOR
ENDIF
IF ( USA = 1 ) AND ( GELEN = 61 ) THEN
GOSUB KEPENK_KAPANIYOR
ENDIF
goto basla


ana programın başla ise burada neden goto basla diye başa geri dönmüyorsun?  kodunda yukarıdaki gibi düzelt dene

furkan41

Tamam işte goto basla yani baslangıca geri döndüm fakat şu var ilk koşulu sağlıyor garaj kapanmaya başlıyo fakat alt sınır anahatrına kepenk dokununca lojik 1 seviyesinde giriş pinine 5 volt gidip motoru durdurması gerek ama durmuyor devamlı calışmayı sürdüyor taki alt sınır anahtarından bilgi gelip birdaha alıcıya aynı bilgi gerirse yani alıcı tarafında toggle gibi bir calışma söz konusu kafayı sıyırmak üzereyim bukadar basit birşeye neden yapamıyorum anlamış değilim

Hattuşa

ya isisde bir şema yokmu diğer tarafta işlemci ne o taraftan gelen bilgi varmı? konuya yardımcı olmak için konuyu bilmek lazım.
örnek verecek olursak iki işlemcinin usarttan alıp vermesi ile ilgili basit bir çalışma belki işine yarar.
kusura bakma verdiğin ekmeğe bu kadar köfte oluyor

gogoce

Benimde kafam karıştı şema gönderebilir misin?
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

furkan41

#5
ısı cizimi ve alıcı ve kumandanın hex ve bas dosyaları icindedir

furkan41

#6
şimdi senaryo bildiğiiz otomatik garaj kapısı eğer kumandadan garajı kapat butonuna basarsam alıcıya o değeri göndericek ve eğer üst sınır anahtarı 1 ve kapat komutu gelmişse motor ileri yönde calışacak sonra eğer alt sınır anahtarına değerse motoru durduracak aynı işlem garajı acma icinde gecerli fakat garaj kapanırken sensörden değer gelirse yani ondan pine lojik 1 gelirse motoru durduracak taki sensör lojik 0 değerinde oluncaya kadar

furkan41

Ben kuralları bilmiyordum caps clock tuşu bazen acık kalıyor dikkat etmiyorum ve büyük harflerle yazmışım hiç bir şekilde birşeyi mana etmedim sadece yanlışıklık ve kuralları bilmediğimden ötürü kaynaklanan bir durumdur herkesten ve yönetimden özür diliyorum yanlışım affola

ete

Kuralları bilmediğin için yazmış olduğun o büyük harfli mesajları tekrar girip küçük harfe çevirmen gerek.
Bunu yaparsan sevinirim.

Programına gelince, Her şeyden önce verme tarafında bir sorun yok. Alma tarafında bazı düzenlemeler yapmak gerek.
Öncelikle seri yoldan bilgi alındıktan sonra o bilginin işlenmesini anahtar konumlarına bağlamaman gerek. Bunu yaptığın için program donmuş gibi bekliyor. Halbuki bir LCD ekranın var ve en azından orada bazı bilgiler vererek donmuşluk görünümünden kurtulabilirsin. Kısaca Alma işleminden sonra alınan bilgiye göre ya açma ya yada kapatmaya her halukarda gitmelisin. Orada anahtar konumlarına göre işlem yapabilirsin. Zira ilgili bölümlerde anahtar konumları programı yönlendiriyor aten.
Kısaca ben açma isteği yollamış isem açık anahtarına bakmadan açma komutunu vermeliyim. Ama komutum anahtar pozisyonuna bakmak zorunda olacağı için açması ile kapatması bir olacak sen bunu farketmeyeceksin bile. Ama en azından ekranda Açıldı mesajını görebileceğim bu sayede. Senin yaptığında ise ekran değişmiyor çünki switch zaten açık konumunda ise program oraya gitmiyor bile.

Sende eksik olan sensör bilgisi değerlendirmesi de kapanma komutunda araya girilmesi gereken bir bilgi. O halde kapanma emrini verdikten sonra öncelikle kapandı anahtarına bakacağım ama arada sensör set edilmiş ise ki sanırım nbu araya engel girdi anlamına gelecek o zaman kapıyı durduracağım. Aslında kapı mantığında araya sensör girince kapı tekrar açılmaya zorlanır dururulmaz. Kapanırken engel görülürse Önce durdurulur. Sonra kapı tekrar açılır açık siwitchi görülünceye kadar. 
Her neyse vardır bir bildiğin belki deyip isteğine uygun şekilde düzenledim programlarını.
İlişiktedir.
Ete

furkan41

Büyük harfler ile yazmış olduğum yazıları düzelttim tekrar sizden özür diliyorum yardımınız için cok teşekkür ederim ete hocam ben bas dosyasının actığımda baya uzun bir kod bekliyordum ama kodu görünce okadar şaşırdım ki ağzıma sinek kaçacaktı o derece  ;D ;D ;D

furkan41

Ete hocam program da yine bir sorun var şimdi kepenk yani garaj kapanırken sensör birşey algılarsa kepenki kapatan motorun durması gerekiyor şimdi garajı kapatma komutu veriyorum garaj kapanmaya başlıyor fakat sensörden pice bilgi gönderiyorum yani butona basıyorum fakat lcd ekranda engel var yazısı cıkıyor buraya kadar herşey güzel fakat motor durmuyor yani pic o pinden hala cıkış veriyor programda engel var yazısının olduğu kısma gelip hemen alt satırına MI = 0 komutu verdim bu sefer tekrardan denedim sensörden bilgi gönderdim yine ekranda yine engel var yazısı cıktı fakat yine motor durmadı yani altında o an bir cocuk varsa ezildi gitti velhasıl :D

ete

Engel var yazısının hemen altına yerleştir durdurma komutunu.
Ete

Not: Önceki mesajıma eklediğim RAR dosyasını yeniledim ve durdurma komutunu ekledim. Engel kalktıktan sonra motora yeniden hareket vererek yürümesini sağladım. Oradan yeniden yükleyebilirsin.

furkan41

Ete hocam şimdi bas dosyasını inceledim aynı değişiklikleri daha önce bende yaptım ama calışmadı acaba benim bilgisayarımla alakalı bir sorun olabilir mi hocam ?

ete

Bilgisayarla alakalı olamaz. Derleme sorunu olabilir. PBP versiyonun kaç?
Başka bir sorun olamaz.

Ete

furkan41


Powered by EzPortal