eeprom yazımı hakkında ?

Başlatan erkan614, 17 Haziran 2007, 16:03:44

erkan614

arkadaşlar hepinize iyi günler. benim size şöyle bi sorum var:
yazdığım programda eeproma bilgi yazıyorum sonra tekrar okuyup duruma göre değişiklik yapıp tekrer eeproma kaydediyorum merak ettiğim konu;

program tam eeproma veriyi kaydederken enerji kesilirse tekrar enerji geldiğinde pic okuma işleminde eepromdan hangi sayıyı okur?

a) yeni yazdıgım sayıyı
b) bir önceki yani eski yazdıgım sayıyı  (inşallah bu seçenektir :) )
c) 00H (inşallah bu seçenek değildir :( )
d) FFH (inşallah bu seçenek değildir :( )
e) herhangi biri :)

yardımlarınız için teşekkürler

bu gün öss ye giren tüm arkadaşlarımıza Allah kolaylık versin inşallah hayırlı bir sonuç alırlar.

MURSEL

seceneklerde hiçbiri şıkkını unutmuşun    oda olabilir :roll:  programı öncellikle  veri girdisi  elle manuelmi yoksa yazılımda koşullara baglı  olarak degişiyormu ilk önce yazılımınada bakmak gerekiyor eger yazılımın otamatik deger atıyorsa eeprama büyük ihtimal en son girdigi deger kalır   zaten  eeproma kayıt ederken  nerden veri alıcaksan klavye  tuş takımı v.b  her yeni veri geldigin de bir pinde degişiklik ondan sonra  degeri filan alırız  ki sende hiç bi tuşa basmadıgına göre   en son degerler kalır   birazdaha  acık bilgi verirsen yazılıma da bakmak gerekir

erkan614

epromda kaydedilen sayı yazılım koşulları ile değişiyor.
bu sayı zamanlama saymacı devre enerjili iken ne kadar dk geçmiş onu belirtior %5 sn bi hata payı hiç önemli değil.

teknikelektronikci

merhaba yeni başlık açmak istemedim ve burdan sormak istedim sorum şu picin epromuna ilk önce sabit bir veri kayıt ediom bunu data komutu ile yapıorum örn
DATA @0,"  TEKNIKELEKTRONIKCI",5
 sonra ben program çalışırken seri bir kesme olduğunda kesme alt programına dallanıp gelen seri bilgiyi eski bilgiyi silip yenisi ile değiştirmesini istiyorum örn "picproje.com "  gönderdim bunu nasıl sırasıyla alıpda eproma kaydedeck bi bilgi verebilirmisiniz rica etsem birde bu bilginin alınmadan önce epromun eski veriyi silmesi için epromun formatlanması gerekirmi
ben ufak bir şey yaptım ama sanırım burda bir for döngüsü kullanmak gerek zaten çalışmadı :)


disable 
seri_kesme:  
TEMP=RCREG 
write 0,temp
IF temp=5 then 
RCIF=0 
endif
enable 
resume
END    


şimdidien yardımlarınız için teşekürler kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

MURSEL

Alıntı yapılan: "teknikelektronikci"birde bu bilginin alınmadan önce epromun eski veriyi silmesi için epromun formatlanması gerekirmi

"eepromun formatlanması "  ccs de direk üzerine yazıp istedigimiz veri kalmasını saglıyoruz fakat asm temel oldugu için yazılacak adrese yazılımla  formatlamaya gerek varmı bilmiyorum


picproje.com her harfini karekter olarak teker teker gönderebilirsin ""p gönder i gönder c gönder "" eebromada aldıgın degerin ascı karşılıgını kaydetmiş olucaz
örn a carekterini  aldıgımda eeproma yüklenen deger 65  gibi   YANİ nereden veriyi  gönderiyorsan pic proje.com daki tüm harfleri karekter olarak tanıtıp  karekterr olarak göndericeksin  alırken  sorun değil degişkene atıp  ordanda eeproma yolayabilirsin  

KOLAY GELSİN

@erkan614 arkadasım ben anladıgım kadar acıklamaya calışıyım

tamemen iş program algoritması ile alakalı  bi fikir de bulunayım sanırım  1dk doldugunda  eeproma yeni veriyi giriyorsunuz yani
1dk doldumu ?
evet degişkendeki sayıyı 1 artır ;
ve eeproma yükle;
hayır dolmadı ::

ee elektirk kesildiginde ne olucak   :roll:  programı ilk acıldıgında şunu yap
pice  ilk enerji geldiginde dk ları yazdıgın eeprom adresini oku ve tekrar aynı  degişkene ata ki  sayma kaldıgı yerden devam etsin  sonra elle manuel olarak sıfırlama secenegi koy örnegin  ra0  butonla  basıldımı  eevet sayıyı sıfırla  yani eeproma yükledigin degişkenin içine  0 yükle

teknikelektronikci

hocam cevabınız için teşekür ederim fakat başlığın nerde açıldığına dikkat etmemişim asembler altında açılmış ben ise pic basic pro ile yazıorum gene de cevabınız için teşekür ederim sanırım mantık aynı olsa gerek kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

aslan_korhan

EEPROM formatlamak gerekmiyor. Üzerine en son ne yazarsan o kalıyor...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

XX_CİHAN_XX

@erkan614,
Çözüm1
Pic beslemesine devren yuksek akım cekmıyorsa 1000uF ,çekiyorsa 2200 uF gibi yüksek değerlikli bir kondansatör koy.
Neden?
EEproma yazma işlemi yaklaşık 3-4ms sürer.(tabi picin eeprom belleğinden bahsediyorsak).Enerji gittiği sırada yazma işlemi oluyorsa bu bikaç milisaniyelik gerekli gecikmeyi kondansatör sağlıyacaktır.
(Tabi bu kesin çözüm değil ama ufak bir önlem olabilir)
Çözüm2
Bence bu kesin çözüm :)
Burda iş yazılım becerine kalıyor yapıcağın şey şu.EEpromda kullanılmayan bi adres seç örneğin 0xFF adresi.Sen programında eeproma her yaptığın kaydı(kayıt işlemini bitirdikten sonra) birde 0xFF ye kaydet.Yani birbaşka değişle son yaptığın kaydın bir yedeğini 0xFF adresine kopyala.
Devrene her enerji geldiğinde ise programın en başında eeprmdaki bilgileri değerlendirmeden önce son kayıt yaotıgın bellek hücresini 0xFF deki bellek hücresi ile karşılaştır.Eşleşme  Başarılı ise sorun yok enerji düzgün kapatılmış kayıt sırasında herhangi bir problem yaşanmamış demektir.Yok eğer 0xFF deki farklı Son kayıt yaptığın veri farklı ise kayıt sırasında problem oluştuğu aşikardır.
Not son kayıt yaptığım hücrenin adresini bilemem dersen onunda çüzümü basit her kayıt anında kaydedilen verinin kopyası 0xFF ye alınıyorsa 0xFE gibi başaka sabit bir adresede En son kaydedilen verinin kaydedildiği adresi kopyalaman yeterli.
Eğer yazılım bilgin bunu yapabilecek düzeydeyse bu kesin çözümdür.Bunu yapmalısın.Değilse ufakta olsa bir önlem olsun diye en başta söylediğim Donanımsal eklemeyi yapabilirsin.
Kolay gelsin...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

sitenindelisi

Cihan önerdiğin yöntemi sadece yazılım tabanlı yapmanın da bazı sıkıntıları vardır. Yoğun çalışan sistemlerde bu yöntem kısa sürede epromu kullanılamaz hale getirir. Donanımsal ilaveler+ kesme desteği ile beraber kullanmak en güzelidir.

erkan614

ek kondansatör koymak bu sorunu çözmez kanaatindeyim çünkü kondansatörün boşalma zamanı eeproma kayıt anına denk gelebilir ayrıca sistem çok düşük güçlü transformatörsüz seri 470 nF lık bi kondansatörle giriş beslemesini sağlıyorum.
benim birader üç kayıt yapmamı ve bunları karşılaştırıp en ez 2 si eşiyse bu değeri kullanmamı tavsiye etti mantıklı gibi geldi @cihanın önerisine benzio bakalım bi sonuç çıkarabilcem mi?

XX_CİHAN_XX

Alıntı yapılan: "sitenindelisi"Cihan önerdiğin yöntemi sadece yazılım tabanlı yapmanın da bazı sıkıntıları vardır. Yoğun çalışan sistemlerde bu yöntem kısa sürede epromu kullanılamaz hale getirir. Donanımsal ilaveler+ kesme desteği ile beraber kullanmak en güzelidir.
Hocam haklısınız yoğun kayıt yapılan bir sistemse zaten uzun ömürlü olmaz bu durumda benım önerdiğim sistemi kullansada kullanmasada uzun ömürlü olmaz.Yoğun kayıt yapılmadığını varsayarak böyle bir öneriyi yapıyorum.
@erkan614,
Üst üste 3 kayıt yaptırmana gerek yok 2 kez kayıt yapıp karşılaştırman yeterli.Fakat bu karşılaştırmayı ilk enerji geldiğinde yapıcaksın ki enerji gitmeden önce son kayıt düzgün yapılmış mı bunu anlayabilesin...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.