kronometre

Başlatan teslaa, 11 Şubat 2006, 14:37:17

teslaa

16f877 ve lcd kullanarak kronometre yapmaya çalışıyorum, 00:00:00:00  şeklinde soldan itibaren SAAT:DAKİKA:SANİYE:SALİSE gösterecek,salise 100'e gelice sıfırlanaca ve ekrana 00 olarak aktarılacak (salise degeri ekranda 00 ile 99 arasında sayacak) yazdıgım kodlar calisiyor fakat  bir dijital kol saati krometresi ile karsılastırınca benim devremin gösterdigi deger ile tutmuyor.  Pic basic pro komutlarının herbirinin kaç komut saykılındıgında işlendigini ve buna göre herbir komutta dair bilgiyi nereden bulabilirim?
(kodlarımdaki  pause 9  ve pauseus 994 gecikmeleri ile ve bunlara ilave olarak gelecek olan komut gecikmeleriyle 1 saliseyi tutturmak istedim. Daha gerçeğe yakın bir zamanlama için fikirleriinizi paylaşırsanız sevinirim.



salise var byte
saniye var  byte
dakika var byte
saat var byte

salise=0
saniye=0
dakika=0
saat=0

LCDOUT $FE,1
Lcdout $fe,$80,DEC2 saat      
Lcdout $fe,$82,":"
Lcdout $fe,$83,DEC2 dakika        
Lcdout $fe,$85,":"
Lcdout $fe,$86,DEC2 saniye        
Lcdout $fe,$88,":"
Lcdout $fe,$89,DEC2 salise  

basla:
           

           if salise=100 then
           salise=0
           saniye=saniye+1
           Lcdout $fe,$86,DEC2 saniye
           endif
           
           
           if saniye=60 then
           Lcdout $fe,$86,"00"
           saniye=0
           dakika=dakika+1
           Lcdout $fe,$83,DEC2 dakika  
           endif
               
           if dakika=60 then
           Lcdout $fe,$83,"00"
           dakika=0
           saat=saat+1
           Lcdout $fe,$86,DEC2 saat
           endif
           
           if saat=100 then
           Lcdout $fe,$86,"00"
           saat=0
           goto enbas
           endif



Lcdout $fe,$89,DEC2 salise
pause 9             ' yaklaşık 1 salise
pauseus 994
salise=salise+1


goto basla
end

Erol YILMAZ

Zaman hesabini daha rahat yapabilecegin  bir yontem var.

TMR0 interrupt...

3.2768 Mhz  kristal kullaniyorsun  [Anadolu'nun en ucra koselerinde bile var artik]

TMR0 kesmesini sn de 100 defa kesme olusturacak sekilde ayarliyorsun. nasil ?

3276800            /     4      /  256   /  32        = 100    Yapar.
Osc frekansin/zorunlu/8bit/prescaler  = Sonuc :D

Boylece hic ugrasmazsin , hic ayar yapmasan bile en kotu ihtimalle bir gunde toplam 15 sn hata yapar. Normal sartlarda 7-8 sn. Ayar yaparsan 1-2 sn ...  Bu hata OSC frekansinin dogruluguna bagli olur...

Yazilimsal hata yapmani engeller...

teketek

@Erol üstat,

benimde bi sorum/sorunum var.Bir devre çalışırken ona bir süre veriliyor mesela 10 dk. Ayarlanan bu süre sonunda devrenin durması gerekiyor.Bu konudan https://www.picproje.org/index.php/topic,10216 bu başlıkta da sözettim ama olayın kronometre ile mantık olarak benzeşen bi yönleri var gibi geldi bana.
Konumuza dönersek burda bahsettiğin yöntemi incelerken bazı konular kafama takıldı;

1)Bu bahsettiğin yöntem sorunumu çözebilir mi??
2)bu bahsettiğin kristal (3.2768MHz) Pic'e taktığımız kristale ek olarak takılıyor öyle değil mi?
3)TMR0 kesmesini sn'de 100 defa nasıl ayarlayabilirim ? (bu işin biraz acemesiyim)
4) https://www.picproje.org/index.php/topic,8521&highlight=kronometre  bu sayfada ki @seco06 nın verdiği örnek içerisinde bu bahsettiğin olay yapılmış gibi geldi bana yanılıyormuyum ??
Bilgi fark yaratır..