T

16F628A Ve İlk Denemem :(

Başlatan TufanHan, 22 Kasım 2013, 23:43:41

TufanHan

Öncelikle herkese merhaba bende bugun pıc derslerine basladım.Aranızda yeniyim..
İlk 2 dersi anladıktan sonra kendime göre ufak çapta birşeyler yapmak istedim.
Ama kodu derlerken hata aldım.



est32

#1
results kısmında(en altta) hataları söylüyor. O hatalara tıklanırsa program o satıra gider ve hatanın olduğu kısmı söyler.
Buradaki hata BUTTON isismli sembol. Çünkü BUTTON  bir pic basic komutudur. Eğeer BUTTON kelimesi BUTON olarak değiştirilirse sorun düzelir. Ayrıca 8 bitlik bir işlemcide 8. bit yoktur en fazla 7 olabilir(çünkü bitler sıfırdan başlar). O nedenle de PORTB.8 yanlış birşey, doğrusu PORTB.7 olmalı aynı satırda iki hata.
Başka birşeye bakmadım, umarım başka hata yoktur.
düzeltme:
derleyicide işlemci türü 628 görünürken programda 628A görünüyor bunlar düzeltilmeli,gözümden kaçan başka bişey yoktur inş.

TufanHan

Ben fiziki olarak pinleri saymıştım :(
Teşekkür ederim.
Hemen deneyeceğim..

est32

#3
hadi sonucu bekliyorum yatacağım, yarın iş var :)

TufanHan

Şimdi de farklı hata verdi..

est32

View kısmında "compile and program options" sekmesinde "compiler" kısmından bir caps verir misin sanırım derleyici PBP tanıtılmamış

TufanHan

#6
Abi C:Pbp tanıttım manuelde gösterdim,otomatikte ama olmuyor.Mpasm kısmınıda Proteusun tool klasörü içindeki mpasm klasörünü gösterdim.


est32

oradaki MPASM seçeneklerini kaldırıp da dener misin?
ayrıca derleyici versiyon da görünmüyor, pbp ile uğraşmayalı da epey oldu protona bulaşalı

TufanHan


est32

istersen yarın devam edelim ya da bir başka arkadaş baksın, yatmam gerekiyor benim için baya geç oldu yarın erken kalkacağım. ama sorunun sanırım basit bişey.
şimdi aklım ageldi belki işletim sistemin 64 bit olabilir o zaman da mcs sorun çıkarıyormuş.
iyi geceler. k. bakma bu kadar ilgilenebiliyorum, olmadı yarın sabahtan bakarız.

TufanHan

Allah rahatlık versin...
Moral bozukluğu ile yatağa gidiyorum ..

est32

inan bana çok basit bi şekilde aşılabilecek bir sorun, derleyici ile ilgili. Moral bozmaya değmez.
sanıyorum derleyiciyi görmemiş yoksa derleyicinin versiyonu görünürdü.
ayrıca help kısmında about'a tıkla bir bak bakalım orada ne çıkacak, bendeki gibi olmalı, versiyonlar yazmalı.
Neyse sabah bakar devam ederiz iyi geceler, sabah ola hayrola. kafayı takacak bir durum yok, basit bir sorun sadece üzerine gidilmesi gerek...

TufanHan

 sabaha karşı 3 civarında çözdüm olayı...Assembler kisminda mpasm i göstermiştim.
Altında ki tikleri kaldırdım.Yarım yamalak ıngilizceile anladığım kadarı ile mpasm 18 serisi için
Bende o seçili olduğundan derlemiyormuş.
Bu sefer de devre anormal çalışıyor...screenshot atamıyorum mobildeyim.

ete

Derleme sorununu çözmüşsün. Programın anormal çalışması ne anlama geliyor açıklamamışsın. Muhtemel olasılıkları ben yazayım.
Bir defa butona bastığın zaman ledler yanıp sönecek ve sonunda iki led de yanık kalıp yeniden tuşa basmanı bekleyecek. Ama sen bu aralığı tespit edemeyecek ve arada bastığın tuşun tepki vermesini bekleyeceksin.  Halbuki tuş her 2000 ms (2 sn) de bir tepki verebilecek şekilde program yazılmış. Bu nedenle hızlı bir tepki beklememen gerekiyor. Tepki süresini hızlandırmak için beklemeleri döngüsel gecikmeye çevirip araya buton kontrolü eklemen gerekir. Ne demek döngüsel bekleme dersen şöyle bir şey.
For I=0 to 900
     Pause 1
Next
Bu bir döngüdür ve süre olarak 900 adet 1 ms gecikme yapacağı için toplamda 900 ms lik gecikme yaratır. Gerçekte süre 900 ms den biraz fazla olur. Çünki her bir komutun kendi gecikmeside vardır.
Pause 900 yazıldığı zaman komut gecikmesi göz ardı edilir çünki yalnızca bir kaç us dir. Ama
Bir döngüde işlem 900 defa yapılıyor ise bir kaç us lik gecikmelerin toplamı epeyce bir miktar tutabilir. Basit hesap yapılırsa pause 1 komutu diyelimki 5us lik bir komut gecikmesi yaratsın. Bunu 900 defa yapınca toplam komut gecikmesi 900*5=4500us yada 4,5 ms lik bir gecikme yaratır. Bu durumda gerçek 900 ms lik döngü gecikmesi için döngü 0-900 arasında değil 0-886  arasında düzenlenir
Döngü arasına tuş komutunu eklemek için şöyle yapmak uygun olur,
For I=0 to 886
   Pause 1
   If buton=1 then
      Kırmızı led=0
      Sarıled=0
      While buton =1:wend
       Goto basla
    Endif
Bu örneğe göre programını yeniden düzenle yada sorun ne ise açıkla ona da bakalım.

Yeri gelmişken bir öneride bulunayım. Tuş kontrolünü daima tuşa basınca port pinine low verecek şekilde pullup lı olarak yapın. Böylece harici tuş bağlantıları için yalnızca gnd taşırsınız. Üstelik B portunu kullanırsanız dahili pullup dirençlerinden yararlanırsınız. Buradan şu sonucuda çıkartabilirsiniz. Tuş bağlantıları için daima B portunu kullanın.
Ete

TufanHan

Hocam size verdiğimiz zahmetten özür dileriz.Sizin her yeni başlaynı görüp yaptıklarında sizi de yanınızda görmesi öğrencinizi daha mutlu ve şevkli kılıyor.

Programım çalışıyormuş,yalnız ledi red sectiğim için animasyonu göremiyormusum.

Aklıma başka bir soru geldi 3.dersteyim ve bu aklımda olan soru konu içeriğinde yok.

Butona basınca ledi yakacağım basınca söndüreceğim.Bunu mosfet üzerinden yapmaya çalışıyorum.N kanal bir mos kullandım ve mos anahtarlamasını iyi kötü biliyorum(iyi-kötü derken sadece kötü)
Isıs de devreyi modelledim.Pic basic de bazı şeyleri yazdım.Ama nasıl butonu ıf döngüsünden çıkarıp tekrar ıf döngüsüne sokabileceğimi anlamadım.



Powered by EzPortal