4 kademelı tımer devresi

Başlatan adnan yavuz, 02 Mart 2017, 19:16:04

adnan yavuz

Sayın hocam ve arkadaslarım 4 fonksıyonlu tımer devresı yapmaya calısıyorum ama bır seyler ters gıttı.Şöyleki uyarı ledi
4 kere yanıp sönecek ondan sonra role 1500 msn devrede kalacak dıger fonksıyonlarada uyarı ledın sayısı duserken zaman da 250ms kadar dusecek...Bunların hepsını yaptım ama soyle bır durum var ben uyarı ledının bır kere gorevını ıcra etmesını ıstıyorum bunun ıcın uyarı ledını whıle wend dongusu ıcıne koydum ama her seferınde bu  uyarı ledı yanıyor ondan sonra role cekıyor.Kıymetlı arkadaslarım bana yardımcı olursanız cok sevınırım..
                                                                                               Saygılarımla...

ete

#1
Program dosyasını 3 kez eklemişsin hadi buna yanlışlıkla olmuştur dedim 3 kez yanlışlıkda olmaz ya her neyse.
Programına bakayım dedim onuda peşi sıra 2 defa alt alta yazmışsın. Sen her şeyini çift dikişmi hallediyorsun.?
Sorununa gelince. Komut şeklinde bir kusur göremedim. Normal MCS de yazılmış hali ile programı görseydim daha iyi karar verebilirdim ama Yazdığın şekli ile BASLA_D kısmının alt tarafı eksik kalmış. Alttaki kısımdan alıp oraya yapıştırınca sorun ortadan kalkmış oluyor.

Programdaki eksiklik muhtemelen butonlara pullup bağlamadın. Çünki dahili pullup larıda programdan açmamışsın.
Programın başlarına;
OPTION_REG.7=0
WPU=%00000110
ekleyip derle ve yeniden dene bakalım.
Ete

adnan yavuz

Hocam su an arastiriyorum bulamadim.
Wup: anlami nedir ..ayrica 10k pull up direcleri
Donimsal olarak bagladim..Dediklerinizi bi yapayim dosyayi
Pbp formatinda zipleyip te mi gondereyim..
Ilk defa bir site ye uye oldum bazi konulara vakif degilim..
Mesela arkadaslarin kaynak dosyalarina bakiyorum cok guzel o sekilde nasil gonderebilirim bilmiyorum..Beni aydinlatirsaniz sevinirim ....Saygilarimla..

ete

#3
Bi rşey isterken olası ekleride eklemenin ne kadar önemli olduğunun bir delilidr bu mesajlaşma.
Bahsini ettiğin sorun büyük ihtimalle pullup dirençlerinin olmamasından kaynaklanan ve bu nedenle sürekli butona basılıyormuş imajını programa söyleyen bir sorunla karşı karşıyayız. Programa bakınca dahili pullup larında aktif edilmediğini görünce şemada olmayınca pullup işleminin yapılmadığını düşündüm tabiiki. Şeman olsa onları yaptığını görebilirdim.
Vediğim komutlar dahili pullupları aktive etmekiçin kullanılması gereken komutlar.
Option registerinin 7 nolu biti LOW olursa genel anlamda pulluplar aktif oluyor. Ancak hangi pine pullup uygulayacağına da WPU (Weak Pull UP) registeri karar veriyor. BU nedenle o registere %00000110 değerini verdik.
Bu komutlarla dışarıdan direnç bağlaman gerekmiyor artık. Bağlasanda sorun olmak iki kaynaktan pullup direnci olur.

Programlar MCS yani microCode Studio ile yazılıyor. Aynı işi MPLAB ilede yapabilirsin tabiiki ama MCS ile yazmak bana biraz daha kolay geliyor her nedense. MCS çıktı olark ya BAS uzantılı yada seçime bağlı olarak PBP uzantılı dosyalar oluşturur ve sende buraya direk onu koyarsın. BU işin nasıl yapıldığı bu sitede Önemli bilgiler başlığı altında anlatılmıştır. (Basice Nasıl başlanır....)
Programında hiç bir tuşa basılmaması durumunda ledleri yaktıracak bir komut göremedim. Kendi kendilerine yanıyor iseler mutlaka pulluplar ile ilgili bir sorunun vardır. Bence devreni iyice kontrol etmelisin.
Ete

ete

Programa bir açılış gecikmesi eklemek gerekir. Basla etiketinden önce Pause 200 komut satırını ilave etmelisin.
Tus_B ye basılması halinde sistem bou boşuna 500 ms hiç bir iş yapmadanbekliyor ve üstelik sen 500 ms den fazla basılı tutarsan yine bir iş yapamıyor. Çünki oraya WHILE TUS_B=0:WEND komutunu eklemişsin.
Programlarda temel mantık şöyle olmalı. Bir tuşa basıyorsan tepkiyi anında görmeli yada hissetmelisin. Bununda çaresi o Pause 500 leri oradan kaldırıp WHILE komutunuda endif den sonrasına koymak gerekir. Böylece tuşa basar basmaz o andaki SIRA değerini işleme alıp ledleri yakmaya devam eder sen tuşa basıyor olsan bile. Ama son aşamada LED yanık kalır hala tuşa basıyorsan tabiiki. Böylece tuşu bırakman gerektiğinide anlarssın.
Programı bu mantık üzerine kurarsan daha düzgün çalışacaktır. Çıkardığımız Pause 500 lerin orada işi zora sokmaktan başka bir işlevi yok bana göre ama sana bir şey sağlıyor ise onu bilemem.

Ete

adnan yavuz

Sayın hocam dedıgınız eklentılerı (wpu 500 ms pause vs ) ayrıca pullup dırenclerımde kartın uzerınde takılı... Zaten butonlar gorevlerını ısıs ortamın da mukemmel bı sekılde yapıyorlar.Fakat ormal calısmada select butonu sıra atlayabılıyor..Buton arklarını ve gecıkmelerı de yaptım,neden hala sıra sasırıyor anlamadım...
Hocam ancak asıl konu bu degıl gecen yazım da sızden sunu ıstemıstım kademe gectıgımde uyarı ledının gorevını bırkez ıcra etmesını ıstemıstım, ornegın 4. kademede ıken 4 defa sınyal verıp role 1500ms calısacak...Oysa bu yazılımda her seferınde calıs butonuna bastıgımda uyarı ledı yanıyor..
Gecen yazımda bunu anlatmak ıstemıstım sanırım anlatamadım..
alt programlar veya kesme mı kullanmalıyım..???
Sevgılı arkadaslarım sakın benı yanlıs anlamayın bu sorunumu sızede soruyorum bana yarımcı olursanız sevınırım .
bu arada ben bergama lıyım oturdugum sehır de bu konuyla ılgılı hıc kımse yok ...50 yasındayım 8 yasından berı elektronıgın ıcındeyım ama pıclerle tanısmam 2008 lere dayanmakta... o yıllarda asm ıle ugrastım sonra pıc basıc e gectım ...ama kaynak
bulmak o zamanlar da zor ıdı ..E T E hocam dan Allah razı olsun boyle sıte olusturmus cok sevındım ...En cok ıstedıgım sızınle
arkadas olmak bu konular uzerın de fıkır alısverısınde bulunmak..Aklınıza yanlıs bı sey gelmesınden korkarım.Soylekı kodları bana tamamını yazarmısınız gıbı...Boyle bı seyı ben de hayatta sevmem ...Bergama da aynı zaman da amator telsızcıyım..
B ı arkadasım daha oda ta 8 at malatya bolgesın den.. Onunla beraber bazı faalıyetlerde bulunuyoruz..
Bu arada cagrı ısaretım '' tb3 bdn ''
burada fazla bı seyler yazıpta canınızı sıkmak ıstemem ... Gercekten sızınle tanısmak ıstıyorum egeryazarsanız telefonumu da verırım kontak kurarız.. Saygı ve sevgılerımle....     

ete

Sorununu anlamakta zorlanıyorum. Biraz sesli düşünmek ve sorunu tam olarak ortaya koymak gerekiyor.
Buton_A ya her basışta SIRA değişkeni değer alıyor. 0-3 arasında değerler bunlar.
Sonra alınan değer bağlı olarak BASLA_A ,BASLA_B BASLA_C gibi etiketlere gidiyor. Oralarda da standart led yakma işlemleri var.
Diyelimki SIRA=2 oldu. Uyar ledini 2 defa yaktı söndürdü sonra LED i yaktı söndürdü. Buu yapak zorunda çünki programı öyle yazmışsın. Peki sen ne sitiyorsun şimdi. Uyar ledi 1 kere yansın sonra bir daha yanmasın demekle neyikast ediyorsun.
İçimden bir ses SIRA=3 ilk defa olunca Sıra ledi yansın bir kereliğine sonra o 3 rakamı değişmediği müddetçe  bir daha yanmasın sadece led yanıp sönsün gibi bir şey yapılmasını istiyorsun gibi geliyor ama açıklaman o kadar kıt ki anlamakta zorlanıyorum.
Açıklarsan bir şeyler yaparız.
Ete

ete

Senden cevap gelene kadar ben düşündüğümü uyguladım.
Hala istediğinin bu olup olmadığı konusunda emin değilim ama ben yinede vereyim istedim.
Sonucu bildirirsin umarım.

Bu arada simulasyon da olsa PİC ile LED bağlantılarına dikkat etmek gerekiyor. Hiç bir zaman Led leri direk pic pinine bağlamayın. Pic den 5V luk bir voltaj çıkar (HIGH seviyesi) Led ise 2V civarında bir voltaj ister. 5 Volt verirsen ya led bozulur yada pic bozulur. Yeni nesil işlemcilerde isis bile led bağlantısına itiraz edebiliyor. Bu nedenle ledler ile pic arasına 220 ohm direnç bağlaman gerekiyor.

Ete


Powered by EzPortal