delay_ms problem

Katılım
13 Eyl 2009
Mesajlar
7
Puanları
1
Yaş
41
merhaba arkadaşlar,

elimdeki 16f877a pici mikro pascal ile programladım. yazdığım program simulasyonda sorunsuz çalışıyor. fakat board üzerinde denemelerimde bir problem ile karşılaştım, programdaki 1 sn'lik gecikmeler 2 buçuk dakika sürüyor :S

kullandığım kristal 20mhzlik. acil yardımlarınızı bekliyorum.
 
Gecikme rutinleri birer birer sayı sayma esasına dayanır. Zamanlamaların doğru çıkması için işlemci, sayıları hangi hızda sayacağını bilmesi gerekir.

Kullandığın kristalin frekansını yazılıma tanıtman gerekiyor. Bunu nasil tanimlayacagini, kullandigin dilin aciklama dosyalarinda bulabilirsin.
 
mikropascalda aynen mikrocde olduğu gibi kristal tanımı project oluştururken tanımlanıyor. XT ve 20mhz olarak ayarlıyorum.

ayrıca program içindede tanımlamam gerekiyor mu?

bulzaf

şimdi bir deneme yaptım. programdaki kodları kullanarak programın gördüğü clk hızını sordurdum ve lcdye yazdırdım. program clk hızı olarak 10mhz gördü :S mikropascaldan anlayan bir arkadaş bu konuda yardımcı olabilirse sevinirim.

arkadaşlar problemin kaynağını buldum.

basit bir programı hem mikroc'de hemde mikropascalda yazdım. ikisinide denediğimde mikropascal ile hazırladığımda anlattığım problem oluştu. mikroc ile yazdığımda ise hiçbir problem oluşmadı.

mikropascalda proje oluştururken girilen clock frekansını nedense kabul etmiyor. derleyicinin tüm dökümanlarına bakmama rağmen bunla ilgili bir yazıyada ulaşamadım.

artık ne yazıkki yazdığım programı mikroc'ye uyarlayacağım.

ilginiz için teşekkürler.
 
Moderatör tarafında düzenlendi:
Delay rutinini kendin de yazabilirsin.

100 mikrosaniyelik lik bir rutin yaz. Bunu onkere cagiran rutin 1ms gecikme yapar. Bunu da 1000 kere cagirirsan 1 sn gecikme olur.

Bunun için asagıdaki mantığı koda çevirmen gerekecek.

Degiskenlerinin 8 bit oldugunu varsayiyorum. Eger daha uzun degisken tanimlayabiliyorsan kodlari iyie kisaltabilirsin.

Buradaki n degerini deneme yanilma ile bulabilir yada hesaplayabilirsin.

Yuz_mikrosaniye:
X=n
dongu1:
x=x-1
if x<>0 then goto dongu1
return
 
kristali xt yerine HS yapıp 20mhz bağlarsanız ya da xt yaptığınız zaman 4mhz lik kristal bağlarsanız sorun çözülecektir.
 
aynen 20 mhz kristallerde high speed HS kodu kullanılmaktadır.
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst