PIC İLE ZAMAN AYARLI FLİP FLOP(YARDIM);

Başlatan musti, 16 Aralık 2016, 02:34:31

musti

HİÇBİR YERDE BULAMADIM HİÇ KİMSE YARDIMCI OLAMADI.ÇOK MU ZOR?

İlyas KAYA

Öncelik ile ne yapmak istediğinizi söyleseydiniz yardımcı olurduk. Eğer bu şekilde yardım istiyorsanız yardım edilmiyor olması sizce de normal değil mi ?

İstediğiniz nedir ? zaman ayarlı flip flop nedir ? Flip flop ise PIC ile alakası nedir ?

Siz şunu baştan bir anlatın..
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

musti

İlyas hocam 5/3 selonoid valfi röle yardımıyla  pic ile kontrol etme amaçlı kullanacağım.buna bağlı olarak Lcd de gereken yazıları yazacağım.LCD kısmı bilirsiniz kolay.Sadece potansiyometre ile programın zaman  akışını etkilemeden 1sn -15sn zaman ayarını yapabileceğim 2 çıkışlı flip flop.Umarım anlatabilmişimdir.İlginiz için teşekkür ederim.Saygılar

ta3usl

Pot ile pic bacağına ayarlanabilir gerilim bölücü yap. Pic ile bu girişi analog olarak oku,  zaman ayarını da bu okuduğun değer üzeriden verebilirsin.

ete

Size komik gelecek ama balık tuttuğum günleri hatırladım. Önce yem takıp atıyorsun suya (bu senin başlığın oluyor altında detay yok) balıklar ilgilenmiyor hadi biraz oltayı sallayayım çekip bırakayım diyorsun (bu da senin bu "hiç bir yerde bulamadım bu kadarmı zor" demen oluyor) sonunda birilerinin ilgisini çekiyor yaptığın işler ve birisi oltaya takılıyor (buda Ilyas oluyor).
Bu tür mesajlara cevap vermek adetim değildir. Kişi bir şey isterken öncelikle istemesini bilecek. Güzel bir başlık atacak ve altına istediği şeyin detayını verecek. Yoksa böyle abuk subuk düşüncelere saplanıyor insan.
Aynen İlyas'ın yaptığı gibi önce anlamadık ne istiyorsun diyeceksin ardından kişi açıklama verecek o yetmeyecek bir şeydaha soracaksın konu uayıp gidecek burada olduğu gibi.
İşin aslını ilk mesajının altına detaylıca açıklasaydın şimdiye kadar çoktan tatmin edici bir mesaj alırdın diye düşünüyorum.
Bu dediklerim umarım benzer yollarla iş yapmaya çalışanların kulağına küpe olur.

Gelelim istediğin şeye;
Alacaksın bir pic 8 bacaklı olabilir. Analog girişi olması önemli. Analog girişine bir pot bağlayacaksın. Pot sana 1-15 sn zaman ayarı verecek. 0-1023 aralığında ADC değer verecek olan bu pot için sen 1 sn sabit değerin olduğu için 0-14 aralığını ölçecek ve buna 1 ekleyeceksin. 14/1023=0,013685239 elde edersn bunu 256 ile çarparsın 3,50342 bulursun. Bunu 351 alıp çıkan sonucu 100 e bölersin. Formül Sure=(HAM */351)+1 şeklinde olacaktır.
Buradan süreyi hesapladın. Şimdi TMR1 sayacını kullanarak şayet 4 mhz kristal yada dahili osc kullanırsan 500ms lik dilimler elde edeceksin. Bunun için TMR1 sayacını 1/8 bölme oranı ile çalıştıracak ve ön yükleme değeri olarak TMR1H=$0B , TMR1L=$DC değerini vereceksin. Şayet daha büyük bir OSC frekansı ile çalışıyor isen o zaman 100 ms lik dilimler kullanacaksın. Bunun için ön yükleme değerinni frekansa göre kendin bulabilirsin yada PicMultiCalc ile hesaplarsın.
TMR1 sayacı ön yükleme değeri ile çalışmaya başladıktan sonra 65535 değerini aşar aşmaz hemen PIR1.0 biti =1 olur. (Bu timer1 kesme bayrağı dır). Bu senin ip ucun olacak.
WHILE PIR1.0=0 deyip altına yazmak istediğin bütün kodları yazacaksın taaki WEND komutuna kadar.
Kesme oluştuğu zaman PIR1.0=1 olacak ve alt tarafta SAY=SAY+1  ile kesme sayacaksın. Pot dan elde ettiğin değer sana saniye değerini verecek. Bunu 2 ile çarparsan kaç tane kesme (her kesme 500ms olduğu için) yaratman gerekeceğini bulacaksın. Böylece SAY değeri istenilen kesme adedine ulaştığı zaman program alt satıra geçecek değilse yeniden 500 ms lik dilimi sayacak.
İstenilen süreye ulaşılınca bir biti toggle yapacaksın. Mesela TOGGLE FLIP diyeceksin. FLOP=~FLIP olacak
Ardından, CIKISA=FLIP , CIKISB=FLOP olacak.
SOnra aynı işleri tekrar yinelemek için en başa döneceksin.
Ben yeterince detay vererek açıklamaya çalıştım. Ufak tefek detayları atladım çünki önemsiz detaylar. Birini söyleyeyim istersen. PIR1.0 bayrağı her bir dilim başlangıcında önce sıfırlanmalıdır. Aksi taktirde işlemci sürekli kesme oluşmuş farzeder ve süre saymada sorun meydana gelir. Atladığım detaylar mantıksal detaylar olup br kısmı ancak programı yazarken aklına gelir. Ama işin nasıl olacağına dair yeterince bilgi olduğunu düşünüyorum.

Ete

musti

vallahi ne desem bilemedim ete hocam  utandım bile diyebilirim(olta balık).Ancak inancınız olsun yazmadığım yer kalmadı bu konu ile ilgili.Sizin isminizi bile o forumlardan bulup kaydoldum sitenize herkese yardımcı olduğunuzu duyunca.Pic programlama işiyle uğrasmada çok yeniyim.CCS C ile birkaç deneme yaptım başarılı oldum ancak dediğiniz gibi timer ve adc konusunda hiç birşey yapamadım.Yukarıda çok güzel açıklama yapmışsınız ancak bunları CCS C de derleyecek bilgim yok.yardım isteme amacım bu yüzden.Kusur ettiysem Affola ete hocam.İlyas kardeşim kötü bir niyetim yoktu gecenin saat 3 ünde cvp yazarken sende kusura bakma.SAYGILAR

ete

Kusur değilde yeterince dikkatli düşünmemekten kaynaklanıyor herhalde. Ama dediklerimde de haklıydım sende kusura bakma.
Zaman zaman bu tür ikazlar yapıyorum. Elbette bilmeyenleri uyarmak için bu uyarılar. Şimdi sende öğrenmiş oldun sanırım.

Sorununa gelince ne yazıkki bunları CCS de sana kodlayamam. Çünki CCS ile çalışmıyorum. BAsic de çok basit bunları yapmak.
Ama yazdıklarımı dikkatlice okursan ve sonunda ne yapacağını bilirsen sende başarırsın belkide. Denemeye değer.

Ete

musti

Forumda yeniyim Ete hocam bilgilendirdiğiniz için teşekkür ederim.Umarım yardım edecek biri çıkar forumunuzdan umutluyum.Pic16f877a ile yapacağım CCS C de.Ete hocam sanırım ASM kodlarını  C ye çevirebiliyor CCS C programı.Eger bu konuda bilginiz var ise de paylaşırsanız sevinirim.Saygılar

ete

CCS bir derleyicidir. C dili derleyicisi demek daha doğru olur. Basic de bir derleyicidir. Bütün derleyicilerin tek bir görevi vardır. Yazılan programları ASM ye çevirmek. Sonuç olarak aynı program BASIC de yazılınca da aynı işi yapar ve Pic'e ASM olan program yüklenir. CCS de yazılanda aynı işi yapar ve onun derlediği ASM programı pice yüklenir.
Her ikiside çalışırken dışarıdan bakınca anlayamazsın hangisi hangi dilde yazılmış diye.

Sitede CCS ile çalışan arkadaşlar var. İsteyen yardımcı olur elbette.
Ama bana kalırsa oturup yardım beklemektense çalışmaya başlayıp takıldığınız yerde spesifik soru sormanız yardım almanızı kolaylaştırır.
İşlem sırasını size yazdım. Gerekirse bir senayo sıralamasıda yaparım. Ona göre sizde sırası ile aynı işleri yaptırırsınız.
Ete

musti

Ete hocam konu dediğinize geldi uzayıp gidiyor.Ukalalık etmek istemem ama CCS C de derlenenler Hex koduyla Pic e yüklenmiyor mu?Ancak dediğinizi dikkate alıp çalışmaya devam edeceğim.Senaryo sıralaması yardımcı olabilir .İlginiz için teşekkür ederim.

ete

Evet HEX kodu dediğin makine dili yani ASM nin rakamlarla yazılmış halidir. Basic de aynısını yapıyor ve sonuçta bize bir HEX dosyası veriyor bizde onu pice yüklüyoruz. CCS de aynı şeyiyapıyor sana HEX dosyası veriyor ve sende onu Pic e yüklüyorsun.
İşlem aynı dil farklı sadece.

İŞlem sıralaması şöyle olacak;
- Öncelikle ADC okuması yapılıp süre hesaplanacak. BU senin kaç adet kesme yaptıracağını belirleyecek. Burada SAY=SURE*2 şeklinde bir değer yüklenir SAY isimli sayaca. SURE sn cinsinden hesaplandı 2 kesme 1 sn edeceği için 2 ile çarpmış olduk.
1. T1CON=%00110001 değeri verilip TIMER1 aktif edilecek:SAY=0 yapılıp kesme sayacı sıfırlanacak
2  PIR1.0=0 yapılıp TMR1H=$0B ve TMR1L=$DC değeri verilip ön yükleme yapılacak.
3. WHILE PIR1.0=0 deyilip
4. Alt kısımlara lcd de yazdıracakların ve varsa başka işlerini bu aralıkta yaptıracaksın. Tabiiki öncelikle ADC okuması yapıp süreyi tesp
5. WEND komutu (CCS de } kullanılıyor galiba yani WHILE döngüsünün sonunda PIR1.0=1 olunca 6 nolu satıra ulaşacak program
6. Burada  SAY=SAY-1 yapılıp  şayet SAY=0 olmuş ise gereken süre tamamlandı demektir SAY hala sıfırrdan büyük ise yeniden 2 nolu satıra yönlenecek program.
7. SAY=0 olmuş ise  TOGGLE FLIP diyeceksin FLOP da bunun tersine eşit olacak Yani FLOP=!FLIP yada ~FLIP şeklinde yada NOT FLIP şeklinde bu iş yapılabilir. Sonra her birini kendi çıkışlarına vereceksin. Bunlar röleleri sürcek herhalde.
Sonra programı yeniden 1 nolu satıra yönlendireceksin. Aynı işler tekrarlanmış olacak.
Hepsi bu kadar.
ete

musti

Çok teşekkür ederim Ete hocam verdiğiniz bilgiler için akşam uğraşacağım.Eğer siz bunu basic de yazıp verirseniz belki C ye çevirebilirim.Bilgi çok kıymetlidir paylaştığınız için sağolun.

İlyas KAYA

Genelde yardim etmeye calisirim. Hazir birsey ancak cok havamda isem veririm . Bu şekilde yardım alamayacağını belirttiğim için "sazan" durumuna düşen kişi ben oluyorum haklısınız.. 
Sazanlik etmem birdaha kusura bakmayın.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

musti

İlyas Hocam ne desem bilemedim.İnsan ilişkilerini ister reel ister sanal olsun saygıyı asla yitirmeden kurarım.Ete hocam sanrım betimleme yaptı yani kişisel değil.Kusurumuz varsa affola hocam.
Kodu vermek yada vermemek tabi ki de sizin inisifitatiniz. Emeğe ve bilgiye sonsuz saygım vardır.

Adem AYDIN

#14
Alıntı yapılan: musti - 16 Aralık 2016, 02:34:31
HİÇBİR YERDE BULAMADIM HİÇ KİMSE YARDIMCI OLAMADI.ÇOK MU ZOR?
Bakmıyorsan Göremezsin. Bu yazın nelere sebep oldu. Ben buldum siteye bak.
(Örnekler Dün Değil 8 Yıl Önce Eklenmiş)

320volt.com/ccs-c-ornek-uygulama-kod-arsivi-c-ve-hex/
ALLAH 'ın Dini Galip Gelmesi İçin (Malınızla ve Canınızla) Çalışın.

Powered by EzPortal