PBP Hata

Başlatan Sıfır, 12 Temmuz 2014, 18:15:58

Sıfır

Merhaba ben bir program kodluyordum.Hatalara baktım ve şöyle bir şey oldu ama hata yok ve hata olsa bile tıklayınca göstermiyor:


ete

Belliki programda yada derlemede bir hata var. Ama programı buraya koymazsan hatayı bulabilme şansımız yok maalesef.

Ete

Sıfır

Engellemeyi kaldırsanız size özelden yollasam  :-\.Özel program da.

ete

Buraya koy herkes görsün. Bunun özel mesajla ne alakası var.

ete

Sıfır

#4
Özelden yollasam?

ete

Şu satırı bul;
DEFINE LCD_BITS 4             s
Satırın sonunda fazladan bir "s" harfi mevcut. Bütün hatayı bu verdiriyor.
Silersen derleme hatasız yapılır.
Ancak programa bir bakarsak bir sürü kusur bulmak mümkün.
kusur-1; Program hangi hızda çalışıyor belli değil. DEFINE OSC 4 ilave edilmeli

Kusur-2: Hiç sigorta ayarı koyulmamış.  Aşağıdaki linki okuyun,
http://etepic.com/index.php/topic,1687.0.html

Kusur-3:Programda KESME özelliği kullanılıyor.  Kesme formatında kesme satırından bir evvelki satıra DISABLE komutu koyulmalı ki kesme esnasında yeniden kesme gelmesin. Kesmeden çıkarken de en son satıra ENABLE komutu koyulurki kesmeleri yeniden aktive ederek kesmeden ayrılsın program.

Kusur-4: Kesme ile sat pulsları elde edilmektedir. Dolayısıyla hassas bir zamanlama olması gerekir.
Ama kesme içinde birde lüzumsuz yere pause ler kullanmışsın. Bunlara hiç gerek yok. Üstelik saatin doğru çalışmasını engelleyen gecikmelerdir bunlar. 10 adet pause 100 komutu 1sn lik gecikme yaratır ve buda saatin her 10 sn debir 1 sn geri kalmasına sebep olur. Sence gerek varmı bu gecikmelere bence hiç yok.

Ete


Sıfır

Teşekkür ederim "DEFINE OSC 4" ile sigortaların hepsini ekledim ama salt puslarını anlamadım yinede pauselerin hepsini sildim şu anda sorunsuz  :).

ete

Bir saat nasıl çalışır?,bir devre yada sistemin 1 sn lik gecikmeler yaratması ve bu gecikme sonunda saniye değerinin bir artması şeklinde çalışır. Bu 1 saniyelik sürelere de saniye pulsı adı verilir.
Sanye pulsı ya işlemcinin timer sayacı özelliğinden yararlanılarak yada harici saat entegreleri (Real Time Clock) kullanılarak elde  edilirler. Bu sistemde TMR0 kesmesi kullanılarak saat pulslari elde ediliyor.
TMR0 bölme oranı 1/64 olarak kurularak TMR0 'ın her 64 clk palsinde bir artması böylece 256x64=16384 us de bir kesme oluşturması sağlanır.  her kesme 16384 olduğuna göre 1000.000 us geçmesi için 1.000.000/16384=61 kesme geçmesi gerekir. Bu nedenle program kesmeleri sayarak 61 olunca saniye değerini bir artırarak saniye pulsini elde etmiş olur. gerisi artık 60 sn de bir dakika bir artırılır, 60 dakikada bir saat bir artırılır ve 24 saatte bir de gün bir artırılarak oradan ay ve daha sonrada yıl bilgisine ulaşılır.

Ete

Powered by EzPortal