avatar_fatih88

20 adet açma kapama verisi saklama

Başlatan fatih88, 24 Şubat 2020, 14:07:10

fatih88

Arkadaşlar merhaba okul saati mantığında fabrika zili yapacağım şu an tüm menüler hazır sadece program girişini yazmadım bu konudada sizlerden fikir almak istiyorum
Birgün için giriş çıkış için 20x2 40 kayıt ve eeproma 18:30 direk kayıt edemeyeceğimiz için 18 ayrı 30 u ayrı kaydetmem gerekiyor 1 gün için 80 adet değişken tanımlamam gerekiyor haftalık 560 değişken yapar tabi 560 değişkene gerek yok 80 adet değişkeni bütün günler için kullanabilirim
Siz olsanız günlük 20 adet kapanıp açılmayı nasıl yapar veya ne gibi bir yol izlerdiniz
Şimdiden cevaplarınız için teşekkür ederim
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

Serk@n

#1
–––Öğleden önce ve sonra AM/PM için bir bit değişken yeter.
–––Üç bit (1–12) saat değişkeni için kullanılır.
–––Üç bit beşer dakika aralarla dakika bilgisi için kullanılır.

Toplam 7 bitlik bir veri her saat için kaydedilebilir.

Baştaki biti yok sayıp sabit sıfır değeri verirsek her dataya bir byte alan gerekir.

40 bytelik veri ile giriş ve çıkış tüm saat bilgileri kaydedilmiş olur.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

ete

Serkanzey,

Hesapta yanlışlık olsa gerek. 1-12 arası saat değerleri için en azından 4 bit gerekir.
dakika bilgisi için 3 bit nasıl yetecek onuda anlamadım.Mesela 45 dakika bilgimiz olsun. Bunu 5 e bölelim 9 rakamını buluruz bu 4 bitlik bir sayıdır.
Sonuç olarak 4+4+1 =9 bitlik bir kayıt gerekyor her bir saat değeri için.

Fatih88,
Bana kalırsa en akıllıca yol harici bir eprom kullanıp her gün için 20+20 kayıt kullanmak
1K lık bir eprom kullansan fazlası ile işin görülmüş olacaktır.

Ete

fatih88

Ete hocam öncelikle mail olarak msj gelmiyor yine bütün konulardan haberdar ol tiklerini işaretledim olmadı her neyse konuya döneyim
Hocam benim düşüncem 40 adet kayıt değişkeni oluşturalım ve hangi gün seçilirse onları eeprom adresinden alsın yani pazartesi 0-40 salı için 41-81 gibi hatta hocam neticede 2x16 lcd kullanıyorum benim için belki 4 değişken bile yetebilir
Giriş saat giriş dakika
Çıkış saat çıkış dakika
1.kayıtta 4 veri çeker kaydeder
2.kayıt için 4veri çeker değişikliği kaydederim
Inşallah anlatabilmisimdir sizce hangi yoldan yürümemiştim
Iyi geceler
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Yanlızca 1 günlük verileri tutabilen bir dizi değişkeni kullanılmalıdır. Saat çalışırken gün değişimi olduğunda günluk alarm verilerini gidip okumalı yada sistem yeni açıldığında da bu işi yapmalıdır. Her saat değişiminde alarm saatleri ile yeni saat karşılaştırılmalı ve uyum var ise bir bit değişkeni set edilmelidir. Her dakika değişiminde yine saat uyum biti set ise dakikalara bakılmalı ve uyum var ise dakika uyum biti set edilmelidir. Saniye karşılaştırılmayacak ise bu iki bit uyumu ile alarm aktif edilmeli yoksa saat ve saniye uyum bitleri set ise saniye değişiminde saniyelere bakılmalıdır. Böylece her seferinde bütün bilgiler taranmamış olacaktır.
Bu işi daha önce yaptım. Günlük 100 alarm işletebilen bir sistemim var ücretli yazılım olduğu için hurada veremem ama kullandığım mantık bu idi.
Ete

fatih88

hocam ben zaten atmel ile çalışıyorum lakin bu siteyi seviyorum genelde kod blogu istemiyorum fikir benim için blok yazılım vermekten daha iyi bunu ugraşarak kenim yaptığımda daha kalıcı oluyor ben sizin tecrubelerinizden faydalanmak ve ona göre yolumu cizmek daha mantıklı geliyor benim için
cevabınız için teşekkür ederim hocam yine takıldığım sonuç olamadığım bir durum olursa yine burdan size rahatsızlık veririm iyi çalışmalar
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

fatih88

sevgili hocam programın gün kaydını günleri diyer günlere kopyalamayı yaptım vatandaş tüm günleri tektek girmesin diye misal pazartesiyi programladı pazartesiyi diyer günlere kopyalayabiliyor size birkaç soru soracam belki ilerleyen günlerde sizin 100 açma kapama verisi kullandığınız projedeki mcu neydi ben atmega328p kullanıyorum 32kb
şuana kadar %75 kullandım daha alarm kontrolü yazmadım o kadarda algoritmayı kısa tutmaya calıştım lakin 24kb kullandım sizcede kullandığım miktar fazlamı
harici bir eeprom kullanmadım hocam 

teşekkürler
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

16F877 kullandım. Harici epromda kullanmıştım. Çok benzer özellikleri var senin programla. Aynı diyebilirim.
96 adet alarm girişi var her gün için 96 adet ama. Alarm kopyalama tatil iptali alarmı aktif pasif yapma işi, alarm süre girişi vs hemen her şey mevcut benim programda.
Kullandığın miktarın fazla yada az olduğuna karar veremem zor. Ne olup bittiğini bilmiyorum. Herkesin tuttuğu (algoritma) yol farklı olabilir. Ben kırk defa düşünüp bir defada yaptım. BAna göre en uygun yol da yaptığım yol idi. Büün program 836 satır tutuyor ki ben genelde her satıra bir komut yazarım. Nadir olarak değişkenlere değer verirken bir satıra birden fazla komut eklerim. Bu durumda senin yazdıkların fazla gibi gözüküyor. Ama dediğim gibi yaptığı işde fazla olabilir. Birde alarm kontrolünü yaz ve bak bakalım ne çıkacak.


ete

fatih88

sayın hocam zil sürelerinide eeproma kaydettirdim zil bölümündeki algoritmayı nasıl yapmalıyım hocam nasıl yapsam daha az yer kaplar birde sizden ricam devrenin 8.7 isisini yollasamda menülerin kullanışını test etmeniz mümkünmü bir abi gözüyle vatandaşlar bu menü ile saati programlayabilirlermi

hayırlı günler
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

fatih88

hocam mailleri tekrar okudum 500ms+500ms peryot oluşturuyorum timer ile demişsiniz ve alarmı orada kontrol edebilirsin demişin anlamadığım nokta alarm karşılaştırmasını timmer icinde kontrolmü etmeliyim eşleşme sağlanırsa röleyide timerin içindenmi aktif edeyim şöyle bir düşündümde timer içinde bu işlem yapılırsa cihaz menüde kalsa bile zilim sorunsuz çalabilir öyle değilmi hocam
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Fatih , program denilen şey bir işlemler dizisidir. bir sürü şeyi yaparsın sonra tekrar başa döner yeniden yapmaya başlarsın. Saat programında da ne yapıyorsun bir sıralayalım.
- Zamanı okuyorsun ve okunan değerleri ekrana veriyorsun
- Menü tuşuna basılmışmı bakıyorsun
- Alarm ları kontrol ediyorsun aktif olması gereken alarm varmı bakıyorsun.
- varsa diğer işler onlarıda hallediyorsun.
- Bu noktada işlerin bitti tekrar başa dönüp aynı şeyleri tekrarlıyorsun.
Bütün bu işler diyelimki 50 ms tuttu. Tekrar başa döndüğün zaman yeniden saati okuyacaksın bu şu demektir her 50 ms de bir saat (RTC) okuyacaksın demektirki bu son derece gereksiz bir işlem. aradan sadece 50 ms geçti yeniden okumaya gerek varmı yok elbette. sn değişmesi için 1000 ms geçmesi gerekiyor.
Bu durumda ben 1000 ms lik bir zaman (Timer-1 ,le) döngüsü kursam. Bu işleride ona göre yeniden sıralasam nasıl olur. Aşağıdaki gibi olacak,
-zaman döngüsünü başlat
- Menü tuşuna basılmışmı bakıyorsun
- Alarm ları kontrol ediyorsun aktif olması gereken alarm varmı bakıyorsun.
- varsa diğer işler onlarıda hallediyorsun.
- Bu noktada işlerin bitti tekrar başa dönüp aynı şeyleri tekrarlıyorsun.
- döngü bitmedi ise yeniden menu tuşlarına bakmadan başla buraya gel.
- Döngü bitti ve 1000 ms geçti. O halde zamanı okuyabilirim demektir gidip zamanı okurum.
- okunan zamanı ekrana veririm ve yeniden zaman döngüsü başlat satırından başlarım.
Hepsi bu kadar.
1000 ms lik bekleme işini 2 adet 500 ms yada 4 adet 250ms lik dilimler halinde yapabilirsin. Nasıl yapacağın osc frekansına bağlı.
Bu iş sana ne kazandırıyor; sıklıkla tuş kontrolü ve  alarm kontrolü yapmanı sağlıyor hemde atıl olan bir zamanda bunu yapıyorsun ve böylece zaman değerlendirmesi yapmış oluyorsun.
Anlatmak istediğim bu idi.

Ete

fatih88

timer0 ile kurdum hocam 1000ms yi hocam ve ekranı ve rtc okumayı timer0 içine aldım
sadece 1000ms okudugumdan rtc saniyesiyle ekrandaki saniye 1sn geriden geliyor yani ekranın temizlen süresi 1sn yede 1 oluyor
şu an ana programda sadece set tuşuna bakıyor başka bir işlem yapmıyor pbp göre
basla:
if set=0 endif
gosub menu
goto basla
umarım dogru yapmışımdır :)
benim demek istediğim alarm kontrol et alt programını timer0 içindenmi çağırmalıyım yoksa
basla:
if set=0 endif
gosub menu
gosub alarm_al
goto basla
gibimi çaırmalıyım tabi bu 1000ms içerisinde kaç terkrar yapacaksa artık 1000ms dolduğunda rtc yi okuyup ekranı yenileyeceğim şu an rtc ve ekran 1sn geğişim sağlıyor
iyi geceler kusura bakmayın yazılarla pek kendimi izah edemiyorum belki sizi kızdırmış olabilirin şimdiden özür dilerim
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

fatih88

ete hocam yardımlarınız için teşekkürler proje bitti sayılır ufak tefek bug lar var onuda hallettimmi işlem tamamdır alarm kısmıda güzel çalışıyor hocam
iyi geceler
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

Powered by EzPortal