Arkadaşlar 12f629 ile her 45 dakikada bir 1. pin ve 2.pin den sırasıyla 30 sn sinyal almak istiyorum. Daha önce hiç 12f629 kullanmadım dahili osilatör kullanarak bunu nasıl yapabilirim bu pic ile ilgili örnek program verebilir misiniz.
Az sayıda pin gerektiren uygulama için 12f629 doğru tercih olmuş,
Sorunun yanıtına gelince; dahili osilatörle zamanı tutturman biraz zor olabilir, aslında ds1302 ya da ds1307 gibi rtc entegrelerinden kullansan daha hassas zamanlama elde edebilirsin.
Hassasiyet çok önemli değilse aşağıdaki kod işini görecektir,
Evet, intrc_io, dahili rc osilatörü devreye alıp (internal rc) kristal için ayrılmış bacakların giriş-çıkış (io) olarak kullanılmasını sağlar.
Diğer konfigürasyon bitlerinin neler olduğu bilgisini pic'in datasheet'inde, bunların nasıl yazılması gerektiğini de başlık dosyasında(12f629.h) bulabilirsiniz.
Sayın tyildizak' a ilave olarak;
32.768 Hz kristal kullanarak istediğiniz kararlılıkta zamanlamaları elde edebilirsiniz ve 1 input 3 outputu kullanabilirsiniz.
12F serisi her yerde bulunan ve bu proje için en ideal(fiyat/performans) MCU. Tanıdık malzeme kullanmak da doğru bir yaklaşım değil. Bu mantıkla benim halen 6502 veya Z80 kullanmam gerekli idi. MCU ya göre proje seçmek yanlıştır. Projeye göre MCU seçmelisiniz. Bu ise bilmediğiniz MCU ları inceleyip, onları bilinir kılmakla mümkün olur.
Arkadaşlar çok basit bir önerim var.Kimse bunu ciddiye almıyor.En ucuz RTC masa saatleridir.Ucuzlukçudan 1 liraya bi masa saati al,içindeki osilatörü sök,osilatöre 1.5 volt ver(senelerce yeter o pil ona) ve osilatör çıkışını iki transistör ile işlemciye 5v'a yükseltilmiş olarak ver.İşlemci de her gelen palste kesme atsın ve ucuza rtc elde etmiş ol.Osilatör çıkışı 1Hz olduğundan hem daha kolay kod yazarsın karmaşık zamanlama hesaplarına girmezsin,hem işlemciyi yormazsın(yani işlemci bu sırada başka işler yaparken bu iş için sadece kesme ile ilgilenir),hem de RTC okumak yazmak için kodlarla cebelleşmez işlemci hafızasını doldurmaz kod tasarrufu yapmış olursun,ayrıca bu işi tek pin ile halletmiş olursun.Hem alarm kullanmak istersen işlemci ile ses üretip işlemci hafızasını doldurmaz ve işlemciyi meşgul etmezsin,aynı osilatörün alarmı ve buzzeri da var,onu kullanırsın.İstersen kendi tasarımım bir saatten bir örnek vereyim.
Kod:
DISABLE
KESME:
SN=SN+1
toggle LED'SANİYEYİ 1 ARTIR,LAMBAYI YAK SÖNDÜR
IF ALR=1 THEN LED=1'ALARM AYARLANIRKEN LEDİ SÖNDÜR
IF mesgul=1 THEN LED=1'ALARM VEYA DERECE GÖSTERİRKEN LEDİ SÖNDÜR
IF SN>59 THEN SN=0 : DK=DK+1
IF DK>59 THEN SA=SA+1 : DK=0
IF SA>23 THEN SA=0
SAAT_SURESI=SAAT_SURESI+1
DERECE_SURESI=DERECE_SURESI+1
INTCON.1=0'KESME BAYRAĞINI SIFIRLA
RESUME'GELDİĞİN YERE DÖN
ENABLE'KESMELER YENİDEN AKTİF
Tasarladığım saati de burada satıyorum zaten: ..............
Bu saatte bu osilatörü kulanıyorum ve hiç sorun oluşturmuyor,hem kod ve hafıza tasarrufu hem alarm...