eeprom 'a sıcaklık verisi kaydetme hakkında.

Başlatan lord_General, 17 Mart 2013, 02:10:50

lord_General

Merhabalar ,

eeproma sensörle ölçtüğüm veriyi kaydetmek istiyorum.

write_eeprom(adres,bilgi);  burada bilgi yazan yere ölçülen sıcaklık değerini nasıl atayabilirim. Ayrıca bu adresi kafamdan atabilir miyim ?
Birde bu kaydedilen adresteki bilgiyi silmek için erase_program_eeprom(adres); fonksiyonu hata veriyor ccs c de.

54_fatih_54

sıcaklık değerlerini kaydedip zaman sonra oradan bakmak istiyorsun bilmiyorum

ama enerji kesilmeden önce son andaki bilgiyi şu şekilde eeproma kaydede bilirsin

sıcaklık bilgisi bir değişkendir değikenin adını sicaklik olarak yazdığını varsayalım

write_eeprom(2,sicaklik);//2 numaralı eeprom hafıya sicaklik değişkenini kaydet
sicaklik=read_eeprom(2);//2 numaralı eeprom hafızadan sicaklik bilgisini al

adres numaralarınıda 1,2,3,4... gibi verebilirsin ben bu şekilde kullanıyorum ama çokfazla eeproma yüklenmedim..daha iyi bilene arkadaşlarda yardımcı olur...
Dalından Kopan Yaprağın Akibetini Rüzgar Belirler..

mehmet

İlk önce kullandığınız denetleyicinin datasheet' ini
açıp okumalısınız. Flash bellek alanı, Ram alanı,
EEprom alanı ne kadar; bunların hepsi yazar bu
belgenin içinde. İşte burada yazan EEprom alanı
içerisinde kalmak şartı ile istediğiniz adrese erişim
sağlayabilirisiniz.
Sıcaklık değerine gelince; EEprom verileri 1 byte(8 bit)
olarak okunup yazılabilir. Siz 2 byte yani genelde analog
veriler 10 bit (8+2 -> 10 dolayısıyla 2 byte kullanmak gerekir)
kullanılmaktadır. Ondalık sıcaklık degerinizi 2 adet 8 bitlik veriye
çevirip istediğiniz iki adrese yazabilirisiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

lord_General

Aşağıdaki şekilde sıcaklığı tek bir adrese yazamıyorum eeproma yaz diyince 0. adrese 134 integer değerini kaydediyor . Ayrıca erase kodu çalışmıyor onun yerine eeprom üzerine kaydettiğim veriyi silmek için ne kullanmalıyım ?
   
   while(1)  
   // sonsuz döngü
   {
   lcd_gotoxy(1,1);
   printf(lcd_putc,"Sicaklik"); // LCD'ye yazı yazdırılıyor
   delay_ms(50);
   ad1=read_adc();
   voltaj=(0.0048828125*ad1)*1000;   //Dijitale çevrilmiş değerin mV değerini hesaplıyoruz.
   sicaklik=(voltaj/10);    // Her 10mV'ta 1 derece artma
   delay_ms(500);
   //filtre kısmı
   //Dalgalanmayı önlemek için
   //kullanıyoruz.
   filterval=(0.9*filterval)+(0.1*sicaklik);
   lcd_gotoxy(9,1); // İmleç 1. satır 9.sütunda
   printf(lcd_putc,"%5.1f'C",filterval); // LCD'ye sıcaklık değeri yazdırılıyor
   lcd_gotoxy(1,2); // imleç 2.satır 1.sütuna options ı yazar.
   printf(lcd_putc,"1.Oku2.Yaz3.Sil"); //options yazar..
   
      if(input(pin_c0))
      {
         while(input(pin_c0))// buttona basılı tutulduğu sürece döngüde kalır.
         {
         delay_ms(50);
         printf(lcd_putc,"\f"); // lcd temizlenir.
         printf(lcd_putc,"Eeprom veri=");
         filterval=read_eeprom(0);
         lcd_gotoxy(1,2);
         printf(lcd_putc,"%3u",read_eeprom(0)); // eepromun 0. adresi lcdye yazılır
         }
      }
      if(input(pin_c1))
      {
         while(input(pin_c1))
         {
         delay_ms(50);
         write_eeprom(0,filterval); //eepromun 0. adrese filterval değeri yazılır.
         printf(lcd_putc,"\f"); // lcd temizlenir.
         printf(lcd_putc,"Eeprom veri=");
         filterval=read_eeprom(0);
         lcd_gotoxy(1,2);
         printf(lcd_putc,"%3u",read_eeprom(0)); // eepromun 0. adresi lcdye yazılır
        }
      }
}

sadogan

Eepromu silmek demek silmek istediginiz adresin 0xFF olması demek.

write_eeprom(0,0XFF);