kalıcı hafıza yardım

Başlatan erkanbyhn, 14 Nisan 2015, 16:31:20

erkanbyhn

Arkadaşlar merhaba,

pic16f628a ile ccs c de lcd ekran sürdüm fakat sorunum enerji kesildiğinde değişkendeki değerin silinmesi.Buna nasıl çözüm bulabilirim.Dahili yada harici hafıza olayı nasıl oluyor.

ete

Mikrodenetleyicilerin pek çoğunda dahili eprom hafızası bulunmaktadır. Bir takım bilgilerin sonraki çalışmalarda yeniden değerlendirilmesi isteniyor ise bunları eproma kayıt etmek gerekir. Sonra program ilk çalıştırıldığında önce bu kayıtlar okunup ilgili registerlere okunan değerler aktarılıp sonra ana çalışma kısmına geçilmelidir.
Tabiiki CCS de fonksiyon şeklinde eprom kaydı ve okuması yaptırılabilir. En iyisi derleyicinin eprom kaydı ve okunması ile ilgli açıklamalarını okuman gerek.

Burada dikkat edilecek husus şudur. Değeri çok sık değişen bir bilgiyi aynı sıklıkta kayıt ederseniz epromların yaklaşık 1 milyon kez olan kayıt ömrünü anında doldurabilirsiniz. Kayıt işlemi  genelde stabil konuma geçildikten sonra yapılmalı gerekirse bir kayıt bayrağı kullanılarak zaten kayıt edilmiş bir bilgiyi yeniden kayıt etme işleminden kaçınılmalıdır. Bayrak kullanımında bilgi değişmiş ise bayrak set edilmeli ve bayrak set ise eproma kayıt edilerek aynı bayrak reset edilmelidir.
Böylece lüzumsuz kayıtların önüne geçmiş olursunuz.

Ete

erkanbyhn

ilginiz için çok teşekkür ediyorum.
Projem kumbara projesi.Delikten atılan paraları toplayıp sayac değişkeninin içinde saklıyorum.Bu değişken değerini 2x16 lcd ekranda gösteriyorum.Gerekli komutları kullanmaya calıştım fakat enerjiyi kesip açtığımda ekranda 133 tl okuyorum.Direk bu değer çıkıyor.

lcd_init();
delay_ms(10);

sayac=read_eeprom(1);





while(TRUE)
{

delay_ms(50);
lcd_gotoxy(1,2);
printf(lcd_putc,"%f TL  ",sayac);
write_eeprom(1,sayac);

ete

Normal şartlarda bu programı ilk çalıştırdığında henüz eprome bir şey kayıt edilmemiş olacaktır.
Bir şey kayıt edilmemiş epromdan okunacak değer 255 dir. Bu nedenle öncelikle okunan değer 255 ise okunan=0 yapman gerekir.
Eprom hafızası her bir adres 8 bitlik byte değişkeni saklayabilir. 16 bitlik değer saklayacaksan 2 adrese kayıt etmen gerekir.
CCS belkide 16 bitlik değişkeni direk kendisi 2 adrese kayıt edebilir bunuda araştır.

ete

Powered by EzPortal