arkadaşlar sorum şu; bazı pic modellerinde bulunan internal osc'leri sorunsuz olarak nasıl kullanabilirim?
kullandığım entegre: pic 12f675 bu entegrenin internal osilatörü var 4MHz.
osc olarak "int osc" yi seçtiğimde pic te takılmalar oluşuyor ve tam değerde çalışmıyor.
xt osc li ve int osc li iki pic'i aynı anda çalıştırdım, xt osc kullanan pic tam hesapladığım zamanda çıkış verdi int oscli olan daha erken çıkış verdi oran olarak %28 daha hızlı
pici programlamadan önce kalibrasyon değerini okumalısın. osccal register ile ince ayar yapıyorsun tam 4Mhz de çalışıyor. %1 hassasiyet olması lazım.
boş pici programlamadan önce okumadıysan, bunu ayarlamak için ufak bir program yazabilir ve bir test devresiyle picin bacağından çıkan frekansı ölçebilirsin. bir modta tam 1.00Mhz çıkması lazım. (dahili osc/4 frekans dışarı veriliyor)
bu 4Mhz hassas dahili osilatör ile çalışan pici birçok uygulamada gönül rahatlığıyla kullanabilirsin. sorun olmaz
ben tam anlamadım
şimdi ben programda oscal registerini 'FF'H yüküyorum bu durumda 1us bir adım olması lazım ama olmuyo
ya sana zahmet biraz daha açıklarmısın?
Hassas zamanlama istiyorsan kesinlikle kristal kullanmalısın.
Dahili osilatör hiç bir zaman kristal kadar kararlı olmaz.
Havanın sıçaklığından bile frekansın kayaçaktır INT Osc. ile...
Yanlış hatırlamıyorsam microchip INT_OSC ye %1 doğruluk garantisi veriyordu. Datasheet den bakabilirsiniz. %28 hız farkından başka bir problem olduğu anlaşılıyor. INT_OSC ile 1200baud hızında data alışverişini sağlıklı olarak yapabiliyorum. Bu da dahili osc nin yeterince hassas olduğunu gösteriyor.
PBP kullanıyorsanız declarasyon için baş tarafta
DEFINE OSCCAL_1K 1
yazmanız gerekir. ASM de de böyle bir atama var ama şu an hatırlayamadım. Ayrıca erkan614'un bahsettiği imalatda ayarlanmış olan ve pic i okuyunca 3FF adresinde göreceğiniz set degerini korumanız gerekir. Yani bunu bir yere not edin. Kullanacağınız hex i programlayıcıya açtıktan sonra bu değeri manuel olarak 3FF adresine yazın.
K128 gibi bazı programlayıcılar bu değeri kendisi okur, ve yazdığınız hex ile gelen dataları üzerine yazayımmı diye sorar. Hayır cevabı verirseniz bu değeri korur.
pbp de DEFINE OSCCAL_1K 1
galiba 12f675 için geçerli olmuyordu.
Dahili osc nin sıcaklıkla değişim yüzdesine bakılır saç kurutma makinası ve klima ortamında test edilerek durum görülür. Projeniz bukadar hasssasiyet gerektirmiyorsa rahatlıkla kullanılır. Örneğindüşük hızda software -seri iletişim için kullanıyor olabilirsiniz. toleransı kabul edilebilir , iletişimde sorun çıkmaz.
ben ASM kullanıyorum ve k128 de programlıyorum.
pdf den baktım pic'i silince ön programlamada fabrikada yazılan int osc nin calibrasyon değeri siliniyomuş.
şimdi bu değer 3FF adresinde anladığım kadarıyla.
bitane okuttum 345C digerinde 3448 yazıyor bahsi geçen bu galiba
simdi bu değeri ben ne yapıcam osccal içinemi yazdırcam verilan ornek
Alıntı Yap
bsf status,rp0
call 3FFh
movwf osccal
bcf status,rp0
bu durumda maximum veya center frekansa nasıl ayarlıycaz int osc i
yukardaki şartlama ile bi 60 sn lik bekleme yaptım 47 sn de çıkış verdi ayrıca takılmalara devam ediyor bunu önlemek için WDT yeterlimi?
16f628 kullanırsın. ayar gerekmez. Factory set!
ya bi oda şartlarında salam saniye tuttursam sıcak ve soğuk durumlara bakacam
0.01 sn hassasiyet lazım
Alıntı Yappbp de DEFINE OSCCAL_1K 1
galiba 12f675 için geçerli olmuyordu.
12f675 için geçerli.
arkadaşlar define osccal 1k 1
in asm karşılığı nedir. nasıl yapıcaz hala hızı tutturamıyorum
vdd ve vss arasını cuplajlayınca zaman sorunu çözüldü fakat takılmalar devam ediyor; ki enerjinin kesilip tekrar gelmesi ile işem yaptığından takılmaması lazım busorunu WDT ile çözebilirimiyim?
Alıntı yapılan: "erkan614"arkadaşlar define osccal 1k 1
in asm karşılığı nedir. nasıl yapıcaz hala hızı tutturamıyorum
call 1023
bsf 3,5
movwf OSCCAL
bcf 3,5
arkadaslar int osc ve 2 tane xt osc li 3 pic 12f675 i ayni anda calıştırdım 128 sn beklemesi lazım gelen (isiste sim yapıldı) bu picler saldım çayıra mevlam kayıra şeklinde çalışıyor ayrıca hızlı yavaş sıralaması değişik saniye değerlerinde de değişiyor işin garibi xt li piclerde kafasınagöre birbirinden alakasız saniyelerde çıkış verior ama 3 sn den fazla bi fark yok aralarında. :(
yarın birkaç deney daha yapiciim bakalım sonumuz hayrola :?
3 picede bir tane osilatör bağlasan bir sorun olmaz...
isis 12f675 icin osccal registerini simule etme özelliğine sağip değil. yani 0x3FF adresindeki değer ne olursa olsun bunu kaale almıyo. gerçek dünyada deneme yapılarak sonuç görülebilir. tabi her pic için bu değer farklı olacaktır.
zaten simulasyon çalıştırıldığında uyarılar ekranını açarakta "osccal register not modelled" gibi bir uyarının olduğu görülebilir.
Alıntı yapılan: "sertac2003 "isis 12f675 icin osccal registerini simule etme özelliğine sağip değil. yani 0x3FF adresindeki değer ne olursa olsun bunu kaale almıyo. gerçek dünyada deneme yapılarak sonuç görülebilir. tabi her pic için bu değer farklı olacaktır.
zaten simulasyon çalıştırıldığında uyarılar ekranını açarakta "osccal register not modelled" gibi bir uyarının olduğu görülebilir.
bendeki isiste problem var o zaman çatır çatır sim yapio :)
BSF STATUS,RP0
CALL 03FFH
MOVWF OSCCAL
ile osccal sartlaması yaptim
gerçek dünyada xt'li piclerin osccal regini de aşşağıdaki gibi şartladım
BSF STATUS,RP0
MOVWF 03FH
MOVWF OSCCAL
velhasıl xtli ve intosc li picler şöyle bi çıkış grefiği verdi
hesaplanan intosc xt pot voltajı
31sn 32sn 32sn 1,25v
42sn 42sn 42sn 1,66v
64sn 64sn 63sn 2,50v
85sn 85sn 84sn 3,33v
96sn 96sn 95sn 3,75v
127sn 127sn 127sn 5,00v
arkadaşlar sizce intoscyi kullansam başıma dert olurmu?
@aslan_korhan piclerin farklı tip osclerde basit programlar için ne kadar sapma yaptıklarını hesaplamaya çalışıom o sebepten
ayrıca xt oscli iki pic arasındaki fark birinin osccal degeri 080h digerininki de 03fh olmasındanmış.
@erkan614
söylemek istediğim osccal sartlaması vs değil, 3ff teki degeri değiştirdiğinde bunu simulasyona yansıtmaz onu diyodum. sen değeri değiştirmiyosun mevcut değeri okuyosun böyle olunca elbette sim de yapar gerçek dünyada da sorun olmaz ama 0x3ff degeri değiştirildiğinde isiste canavar gibi çalışan devren, gerçek dünyada seni üzer. demek istediğim buydu. int osc 0x3ff teki degeri kaybetmediğin sürece(yada kaybetsende olması gereken değeri bir şekilde tekrar yazdığın taktirde) başa bela olmayacaktır. tabi aşırı hassasiyet gerekmeyen uygulamalar için...
(http://img295.imageshack.us/img295/1599/675io8.jpg) (http://imageshack.us)
ok ben 03ffh deki değeri pratik yaparken programa ekliorum zaten k128 var o kendisi yazıo programa.
sistemde çok aşırıda hassasiyet yok yani %1 yeterli olurmu zaman rölesi için?
yalnız intoscyi kullanırken enerji kesilip tekrar verildiinde (sistem enerji geldiginde çalışıo) pic bazan takılıo bu nedendir? wdt ile bunu önleyebilirmiyim?
Power Up Timer veya Brown Out Reset ile önleyebilirsin.(Sadece bir düşünce...) İyi çalışmalar.İyi günler.
power up timer ı kullanıorum ama çözüm olmadı bor ve wdtyi de daden deneyemedim bakalım nolcak