harici eeprom ile datalogger sorunsalı?

Başlatan matter, 23 Haziran 2018, 13:59:13

matter

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°

sigmoid

İ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.

matter

#2
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?



forsa1975

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ı ?

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

kantirici

@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.

Kabil ATICI

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. 
ambar7