Merhaba,harici eeproma(AT24C32) saat entegresinden aldığım tarih bilgileriyle sıcaklık entegresindeki sıcaklık değerini yazdırmak istiyorum.Ve bu işlemler tamamlanınca C# tan epromu okuyacam.2 sorum var;
1)Eeproma(AT24C32) bildiğim kadarıyla 4096 adet 1bytelık değer yazabiliyorum,bu saat değerlerini ve sıcaklığı tek tek bu gözlere mi yazmalıyım?
(isteğim yapı şu şekilde olacak; 23/06/2018 35° )
2)Bu eepromu C# tan aşağıdaki yapı şeklinde nasıl okuyacam?
23/06/2018 35°
24/06/2018 41°
25/06/2018 18°
İhtiyacın olan veriler neyse sadece onu yazarak yerden tasarruf edebilirsin. 1 byte ile 0-255 arası değer tutulur. Yıl için son iki rakam yeterli. Ben olsam
char gun, ay, yil, sicaklik;
Şeklinde tanımlama yaparım. Ekranda göstereceğim zaman bu değeri c# ile isteğin şekilde çıktı elde ederim.
Sigmoid Hocam,bu değerleri toplamda 4096 kayıt adresine sırayla mı yazayım 1bayt şeklinde,yani 1. adrese günü,2. adrese ay'ı,3. adrese yıl gibi?
gun 5 bit
ay 4 bit
yil 7 bit
sıcaklık 1 byte
toplam 3 byte
1365 kayıt sığar
diğer türlü 1024 kayıt sığar
341 fazla kayıt saklanır.
AT24C32 yerine AT24C64 kullanırsanız 1024 fazla kayıt yazarsınız.
her kayıt sırası yaılırken adreslenir.
//Örnek;
kayit no =read_ext_eeprom(1);
kayit_uzunlugu=4;// byte
adres=kayit_no*kayit_uzunlugu;
write_ext_eeprom(adres,gun);
write_ext_eeprom(adres+1,ay);
write_ext_eeprom(adres+2,yil);
write_ext_eeprom(adres+3,deger);
kayit no=kayit no+1; //kayıt numarasını 1 arttırıp
write_ext_eeprom(1,kayit no)// eepromun boş olan ilk dört adresinden birine yazılabilir.
Soruya bir soru daha ekleyip bir şey sorayım. Böyle bir kayıt grubunda 200 kayıt yazdık aralardan 1 kayıt sildim. örnek 5. kayıt . sonra gerideki 195 kayıtı döngü ile 4 er byte ileri yazıyorum. çok pratik gözükmüyor.
pratik bir adresleme çözümü olan varmı ?
ID verilir.
@forsa1975 Kayıt edilen veriye dikkat edersek zaman verisi tutuğunu ve normal şartlar altında bir timestmap'in asla tekrarlanmayacağını düşünürsek bu veriyi kullanarak bir algoritma geliştirilebilir.
Okuma uygulamasını da kendin oluşturacaksan, ay ve yılı sürekli yazmana gerek olmadığını düşünüyorum. Hele ki tüm kayıtları 1 kerede okuyacaksan.
Yılın değişikliğinin başına burada kullanılmayan bir karakter atarsın (örneğin y), böylece yıl değişikliğini belirlesin, ay değişikliğinin başına (örneğin A) atarsın o satırın ay değişikliği olduğun belirlersin. Böylece ay ve yılı sürekli tekrarlaman gerekmez. Sadece gün ve sıcaklığı kaydederek (hatta derece işaretini eklemeden) kayıt için daha fazla alanın olur.
Sadece EEPROM ilk kaydı yapıldığında ay yıl tam yapılır.
Hatta günde 1 defa sıcaklık kaydı tutulacaksa gün bile eklenmeyebilir. Bu sadece enerji kesilme durumu 1 günden fazla olursa sıkıntı olur.