digital saat saniye sorunu

Başlatan turgutcolak, 08 Ağustos 2006, 17:30:31

turgutcolak

arkadaşlar merhaba 2 haftadır digital saat projesi ile uğraşıyorum.projenin yazılımı ve donanımı tamam.benim sorunum yaptıgım saatin saniye bölümü biraz geri kalıyor(3 saatte 5 saniye gibi)..pic 16f877 kullanıyorum ve bu entegrenin tmr0 kesmesini kullandım saniyeleri hesaplarken.. hesap makinesinde tam olarak 1 sn'yi tutuyor ama iş çalışmaya gelince olmuyor..saatim in neden geri kaldığı hakkında fikirlerinize ihtiyacım var ... birde dışarıdan bir zamanlama entegresi kullansam mesela ds1307 gibi bu sorunu halledebilir miyim??? fikir ve önerilerinizi bekliyorumm.... herkese kolay gelsin..

timpati

referansının (kristalin) kararlı olduğunu varsayarsak geriye her komut için harcanan gecikmelerin hesabı kalıyor. yok, referansın sıcaklıktan etkileniyorsa, o zaman kristalini "ısıtmanı" (sabit ısıda tutmanı) öneririm.

3 saatte 5 saniye, yaklaşık 10binde 1 demek yani %0.01. sözkonusu olan zamansa (ve karşılaştırma olanağın/olasılığın da varsa) tam doğru olmak zorunda.
why mr. anderson, why ?

mmengi

pic için kullandığın kristal 2 nin katları değilse timer kesmelerini tam 1 saniye olarak ayarlıyamazsın timer ı belli bir değerden başlatıp saydırsan bile hesapta tutan değer gerçekte sapma yapabilir. Bunun için 4.096 mhz. kristal kullanıp buna göre hesaplama yaparsan hatasız (elbette atom saati gibi hassas olmayacak  :D  ) bir saat yapman mümkün.

4.096 mhz. kristalle bir saykılık işlem 0.9765625 us. de tamamlanır buna göre tmr0 ön değeri 32 seçilip 125 defa taşma olduğunda bu tam 1 saniyelik bir süre verir.

256x32x125x0.9765625=1.000.000 us

CaFFeiNe

3.2768Mhz kristal kullanırsan işin çok kolaylaşır

prescaler'ı 32 ile yüklersen TMR0 dan saniyede 100 kesme alabilirsin bir sayacı arttırıp (mesela salise isimli olabilir) 100 e geldiğinde saniyelerin artmasını sağlarsın oldukça dakik bir saatin olur

3276800 / 4 / 256 / 32 = 100 kesme / saniye

fakat programında başka kesmeleride kullanacaksan TMR0 kesmelerinin bazıları kaçabilir buda saatinin geri kalmasına sebep olabilir bu durumda ayrı bir RTC çipi kullanmak daha iyi olabilir karar senin

turgutcolak

yorumlarınız için teşekkür ederim...önerilerinizi deneyeceğim..önümüzdeki günlerde sonucu size bildiririm.. birde dün bir pic kitabı aldım ve bu kitaptan yararlanarak kesmeyi tmr1 ile yapmaya çalışacagım eger bu kesme hakkında bana söyleyeceginiz uyarı ve önerileriniz olursa sevinirim.. herkese kolay gelsin...

sguykan

Aynı projeyle bende bir zamanlar uğraşmıştım. Hatayı azaltmanın bir yolu kullandığın 16f877 yi 20 mhz. seçmen bu yöntem hata oranını baya azaltıyor. Hatayı tamamen yok etmenin yolu ise saat işini pice değil de DS1302 gibi entegrelere yaptırmak ve bundan bilgi alarak senin displaylerde göstermen. İkinci yöntem herkesin seçtiği yöntem ve elektrikler kesilse de çalıştığından tavsiyem budur.

Erol YILMAZ

RTC entegrelerinin doğruluğu kristalinin doğruluğu kadardır.

PIC li sistemde 3.2768 Mhz bu işe çözüm olabilir.
Doğruluğu yine kristalinin doğruluğu kadardır.

Ama kristale ayar çekebilirsiniz...

Kristale bağlı olan kondansatörler frekansı bir miktar etkiler.
ama frekansı kristal üzerinden ölçmek te zor old. için kalibrasyon için alınacak sinyal PIC ten çıkılabilen en yüksek frekanstaki sinyal olabilir. Böylece problardan da etkilenilmemiş olur...

Ve nu konu çok daha önce de tartışıldı, fikirler beyan edildi...

Sürekli 20 ppm hataya sahip kristal bir günde 1.728 sn kaymaya sahip olur. 20 ppm de fena bir değer değildir. Tabi sürekli hata diyorum. Sıcak ve soğuk hava belki nem artışı ve eksilmesi ile hata azalabilir.
yani hatanın gezmesi de önemli..

Sürekli 20 ppm hata varsa sistemde o zaman problem de yoktur, Sisteme bunu düzelten bir faktör girilir.

igudenler

arkadaşım diğer arkadaşlarında söylediğigibi pic 2 nin katlarında işlem yaptığı için tam değeri tutturamazsın fakat 4 mhz kristal kullanıyorsan tmr2 sayıcısı ile istediğin değeri tutturabilirsin. çünkü tmr2 diğer sayıcıların aksine 10, 15 gibi 2 nin katı olmayan değerlerde frekans bölme yapabilir ve bu sayıcı istediğin bir değerde sıfırlana bilir ben bu yöntemle bir saat yapmıştım ama malesef simdi yapılan hesapları hatırlayamıyorum.
fakat tavsiyem eğer ingilizce biliyorsan datasheet i iyice okumalısın
10 çeşit insan vardır  binary saymayı bilenler  ve bilmeyenler...

Klein

kayma sorununun çözümü....
çin malı quartz saat alınır
içindeki 32768 kristal sökülür
kendi devremize takılır

(bu saatlerde kullanılan kristal , piyasada satılanlardan daha kararlı)