avatar_sonmoikan

5X7 Dotmatrix Saat Projesi

Başlatan sonmoikan, 10 Kasım 2015, 11:23:04

sonmoikan

#75
rhoca68 arkadaşım istemediğin gösterimleri aşağıdaki gibi iptal edebilirsin. Ayarlar da çıkmamasını istiyorsan onun da yukarıda izahatı yapılmış zaten.
BASLA:
    gosub TEMIZLE
    GOSUB HAFIZA_SIL
    LED=1
    GOSUB SENSOR_OKU      ;SENSORU OKU
    GOSUB ZAMAN_OKU       ;RTC YI OKU
    LED=0    
    GOSUB SAAT_AL_G       ;SAATİ GÖSTER
    GOSUB ISI_AL_G        ;SICAKLIĞI GÖSTER
   ;GOSUB HAFTA_GUN_AL_G  ;HAFTANIN GÜNÜNÜ GÖSTER
   ;GOSUB TARIH_AL_G      ;GÜN VE AYI GÖSTER
   ;GOSUB YIL_AL_G       ;YILI GÖSTER    
    ANIME=ANIME+1
    IF ANIME>9 THEN ANIME=0
    
GOSUB BASLA
ABDULLAH

rhoca68

sonmoikan hocam.ben sizin tarif ettiğiniz gibi yaptım şu an saat güzel çalışıyor.daha önce kullanmadığım yerleri siliyordum.silmeden değiştirince gayet güzel oldu.çok çok teşekkür ederim. Allah razı olsun.diğer arkadaşlarımla birlikte hepinize ayrı ayrı teşekkür ederim. Allah sizlere uzun ömür versin başımızdan eksik etmesin.Selamlarımla .

DUHAN_

birisi hayrına şunun pcb şemasını çizse nasıl olur  ????

rhoca68

5X7 Dotmatrix Saat Projesi
Sonmoikan hocam bu verdiğiniz saat devresinde 16f876A dan sonra T1 T2 T3 Diye giden kısıma ULN2803 kullanacak mıyız. Burada ki simulasyonda gösterilmemiş.


xc10

Selam arkadaşlar..Bu devrenin son çalışan halinin dosyaları mevcutmu elinizde...Size zahmet elinde olan varsa yükleyebilirmi?

parametre

Birinci konuda mevcut takip edin

xc10

Devrede orjinal haline göre bazı eklentiler ve çıkarmalar olmuş onun için sordum..En son stabil çalışan dosya varmı diye...

rhoca68

Sevgili arkadaşlarım. hepinize içten teşekkürlerimi iletiyorum. Benim naçizane sizlerden bir ricam olacak. Ben 5*8 dotmatrıx saat yaptım çok güzel çalışıyor. Yalnız saat gösterince titreme yapıyor. Diğer derece ve tarihte titreme olmuyor. Bilen bir arkadaş yardımcı olursa memnun olurum.


ete

Titremenin hangi konumda olduğunuda bilmek gerekir. Zira programda 10 tane animasyon var ve hepside saat gösteriyor. Saat gösterim süresini düşürerek bir tespit yapmaya çalıştım ve anladığım kadarı ile titreme dediğin şey Lazer_Gel animasyonundan sonraki saatin gösterilmesi esnasında oluşuyor.
Saat bir türlü yerine oturmuyor sanki sürekli zıplıyor gibi. Bu neden kaynaklanır diye programı incelediğimde bazı kusurlar görüyorum.
Bu kusurlar genelde dizi değişken kullanımı ile ilgili. Dizi değişkenleri tanımlanırken parametre olarak dizi adedi verilir. DIZI  var byte[40] da olduğu gibi 40 sayısı dizi adedidir. Ancak kullanırken 0 dan 39'a kadar parametre veririz. Bu şu demektir 0 dan 39'a kadar toplam 40 adet dizi anlamınadır. Parametre olarak 40 kullanır isen diziyi DIZI  var byte[41] şeklinde tanımlaman gerekir. Ancak senin 40 adet sütunun var ve tanımlaman DIZI  var byte[40] şeklinde doğru. Ama kullanırken DIZI[40] şeklinde kullanamazsın. Bunu bir çok yerde yapmışsın. Bunların düzeltilmesi gerekiyor. Birtane örnek vereyim.
LAZER_GEL etiketi altından J=40 ile başlıyorsun. Bu J değeri sonra döngüde kullanılıyor ve sonuçta ,
dizi[say1]=Mem[J] eşitliğinde hem Sayı1 değeri hemde J değeri 40 olarak yer alıyorki bu yanlış.
Parametrelerin 39 dan büyük olmaması gerekir. Bunları düzelt ve sonuca tekrar bak. Bunları derken programın başka yerlerinde de 40 kullanımı var hepsini düzeltmen gerekir.

Ete

ete

#84
Birde stack taşma sorunu var. Bu taşma Lazer_Gel işleminden sonra meydana geliyor.
Stack taşmaları genelde iki sorundan meyadana gelir. Birincisi Gosub ile gidilen yerden Goto ile dönülmesi sonucu ikinciside Gosub ile gittiğiniz yerden bir başka yere tekrar gosub ile gitmeniz ve bu işlemi bir kaç kez tekrar etmeniz sonucu meydana gelir.
Birinci sebebi araştırdım orada sorun yok. Ancak ikincisi sanırım bu taşmayı meyadana getiriyor.
Bu işlemcide 8 kademe stack bulunuyor. İlk gosub ile kalan kademe sayısı 7 ye düşer. Bu durumda en fazla 6-7 tane bir birini takip eden (iç içe geçmiş) gosub kullanabilirsin. Bu sayıyı geçersen stack da yer kalmayacağı için geliş adresi kayıt edilemez ve program sapıtır. Buda elbette büyük sorunlar doğurur. Program kilitlenir veya abuk subuk çalışmaya başlar.
Program denilen şey bir döngüdür. Özellikle saat programı başlar saati gösteri bir takım işler yapar ve sonunda tekrar başa dönerek bir sonraki döngüye geçer. Bu süreçde stack'in tamamen sıfırlanması gerekir ki yeni gosublarla başa çıkabilsin. Sende artık kalıyor tam olarak yerini bulmak pek mümkün değil. Çok sıkı takip gerekiyor. Aslında programı manuel olarak takip edip gidilen gosubları yazmak dönüleni de yazarak iç içe kaç gosub olduğunu bulmak gerekir. Uzun bir iş ve bunu ancak sen yapabilirsin.

Ete

Suçluyu buldum. BASLA satırından sonra döngü tamamlandıktan sonra program GOTO BASLA saturı ile başa döndürülmesi gerekirken oraya GOSUB BASLA yazmışsın ve komut stack taşmasına sebep oluyor.
Onu GOTO BASLA olarak düzeltmelisin.

rhoca68

ETE hocam senden tek ricam son yazdığını suçluyu buldum diyorsunuz ya.

Suçluyu buldum. BASLA satırından sonra döngü tamamlandıktan sonra program GOTO BASLA saturı ile başa döndürülmesi gerekirken oraya GOSUB BASLA yazmışsın ve komut stack taşmasına sebep oluyor.
Onu GOTO BASLA olarak düzeltmelisin.
Hocam ne olur burayı düzeltip HEX halinde derlermisiniz. Ben yapıp derlemeye çalıştım bir türlü yapamadım. Selamlar.

ete

Derlenmiş hali ilişiktedir.

Ete

rhoca68

Hocam verdiğiniz hex yine aynı değişen bişey olmadı. Yalnız şunu belirteyim titreme yazmıştım ama
siz anlamışsınızdır. Titreme değil göz kırpma devam ediyor. İlgi ve alakanız için çok teşekkür ederim.

ete

Az çok nasıl bir şey olduğunu tahmin edebiliyorum ama sorunu görmek daha başka bir şey.
Ortada bir sürü sorunlu yer var iken sadece titremeyi görebilmenizde enteresan. Önceki hali ile program bir yerlerde çakılıp kalması gerekirdi. Ama siz titremeye takılmışsınız.

Dot Matrix display sistemleri göz yanıltma esasına dayalı olarak çalışır. Kısa sürelerde display satırlarını sürersiniz ama göz bunları farketmez ve sonuçta komğle display ne gösterecek ise görürsünüz.
Devrenizde displayleri sürmek için 5 adet 74HC595 bulunuyor ve bunların her birine verilecek olan data bitleri ne yazıkki bit - bit veriliyor. Halbuki bunların herbirine 8 bit birden verilebilirdi.
Bana kalırsa sizin titreme yada göz kırpması denilen sorununuz bundan kaynaklanıyor.
Tabiiki sürülen matrixlerin aktif olma süreleride bu kırpışmaı tetikler mahiyette.
Bu aşamada ben yalnızca bir deneme daha yapabilirim. Onuda ilişikte veriyorum. BU programda titreşmeyi kesmiyor ise benim açımdan yapabileceğim başka bir şey yok maalesef.

Belki devre elimde olsa bir kaç şey daha deneyebilirdim. Ben olsam tarama kısmını kesmeye bağlayarak her kesmede bir satır sürerdim. Yapabiliyorsanız bunu yapın.

Ete

rhoca68

Hocam herşey için teşekkürler. SAAT saymaymaya başlayınca göz kırpma aynen devam ediyor. Ben bu işten vaz geçtim. Her ne yaptımsa olmadı. Çok sağol Hocam. Sizleri yordum hakkını helal et. Selamlar.

Powered by EzPortal
▲