İlk Açılışta EEPROM Okuma ve Yazma Sorunları

Başlatan bymrz, 07 Temmuz 2009, 15:05:09

muhittin_kaplan

Bende  Hiç Denk Gelmedim Okurken Bozulduğuna. Ayrıca P_CON daki BOR u kullanamazmıyız bunun için. (İnt Felan Gerek olmaz Sanırım)

Tagli

Ama BOR gelince PIC doğrudan resetlenir. Resetten önce bazı işlemlerin yapılması gerekiyor olabilir.

Kusra bakmayın, cahilce bir soru olacak ama kapasitör boşalırken verdiği voltaj düşer mi? Veya düşerse ne hızda düşer? Eğer ani bir düşüş varsa olayın yazılımla çözülebileceğini sanmıyorum. Sonuçta gerek BOR gerek LVD olsun voltaj düşüşünü farkettiklerinde iş işten geçmiş olacak. Ki sanırım yazma işlemi 1-2 ms civarında tutuyor (yanlış hatırlıyorsam düzeltin), voltaj düşüşü tespit edildikten sonra kalan elektrikle bu süre kadar daha idare etmek gerekcek.

Bir diğer yöntem EEPROM'a değerleri çifterli yazmak olabilir. Eğer iki veri birbirini tutmuyorsa verilerin yanlış olduğunu anlayabiliriz. Tabi bu durumda kullanılabilir EEPROM alanı yarıya düşecek.
Gökçe Tağlıoğlu

muhittin_kaplan

Bor  gerilim belirli bir seviyenin altına düştüğünde reset atar ve Bor bitini set eder. yani bildiğimiz anlamda tüm reg. başlangıç degerine döndürmez. bu resetlemede dönüşte bu bor a bakılıp işlem devam ettirilebilinir. yanlız bu süreyi sağlayacak bir önlem (kond. pil gibi) alınmalı..

Maxim

çekilen akımın şiddetine göre kondansatörde depolanan enerji bir müddet kullanılır yani voltaj sabit kalır sonra düşmeye başlar

Maxim

bir test yaptım ,

besleme voltajı 5.1 volt
16F628A
basit bir sayma işlemi yapıyor ,
çekilen akım 1.5mA ile 1.6mA arasında değişken.

Beslemede 2 adet 1000 uf kondansatör var, yani 2000uf
Beslemeyi kesince voltaj düşümünü görüntüledim.

buda videosu
http://img190.imageshack.us/i/ctest.mp4/

tam ekran bakarsanız daha iyi olur,
scope girişi 1 volta ayarlı,
time/div : 1sn

wsxwsx

Eprom yeterliyse, yazma işlemi yedekli olarak yapılır. Pic müsait zaman yazdığı şeyin bir kopyasını daha yazar. 2 kopya eşit değilse  bir önceki değere dönülebilir. toplam 3 kopya mı desem.

Yani ard arda değil de belli aralıklar ile kopyalar yazılacak. hepsi 1 saniye içinde de olabilir. önemli olan elektrik kesintisine yakalanmamak. Ya da bu epromda anormal değer varsa, varsayılan başka bir değere dönülebilir.  

Daha kötüsü, picin program hafızası da bozulabiliyor. müşteriden cihaz geldi. baktım program çalışmıyor. ama kod korumalı olarak görünüyor. Aynı pici devre üzeridne programladım cihaz çalıştı.

gladi

ben olsam şöyle yapardım :

diyelim ki çok hassas bir proje , emroma veri kaydediyor ve işlem kaldıgı yerden devam etmesi gerekiyor ...

en son veriyi önce pic e yazar sonra işlem gerçekleştiririm ve tekrar pic e işlem yapıldıysa  bir sorgulama daha sonra adımda pic epromuna yazar daha sonra harici eproma yazardım ... elektrik kesintisinde tekrar çalıştıgında pic in içerisinde en son veriyi oradan baz almasını sağlardım ... ve bunun üzerinde biraz kafa yorardım

pic e son veriyi yazdık sonra işlem yaparken kesildi ... veya pic e yazarken kesildi bu sefer işlem yapıldımı ?yapılmadımı ? ... pic e yazarken kesildi ise işleme geçemez ... işlem yapılmadı ise sorgulama yarım kalacak eprom yazılmamış olacak ... gerekli besleme bu kadarını kurtarabilir sanırım ...

dahada olmaz ise ... zaten hassas işler için basit besleme olmaz ...
misafir olan kimse, beraberce getiremediği birşeye kalbini bağlamaz.

bymrz

Arkadaşlar, peki eepromu yazarken anladım da, okurken niçin ozuluyor olabilir?

bymrz

Arkadaşlar bir de,

16f628'de 877 gibi flash program hafızasında değişiklikler yapamıyoruz değil mi?

Yani eeprom yerine flash memory yi kullanmak için!!!!!!!!

gladi

Alıntı yapılan: "alone_lover"Arkadaşlar, peki eepromu yazarken anladım da, okurken niçin ozuluyor olabilir?

bak benimde kafamı kurcaladı .... olabilir belki :S

olma ihtimali şundan olsa gerek ... eprom okuma demek (hatırladıgım kadarıyla ) hem okuma hem aynı zamanda tekrar  yazma demek ...
misafir olan kimse, beraberce getiremediği birşeye kalbini bağlamaz.

wsxwsx

okuyor ve RAM e yazıyor sadece.  ram de malum bir eprom değildir.

bymrz

Arkadaşlar benim bahsettiğim işlemci çalışırken işlemcinin program hafızasını(flash) değiştirebiliyosunuz 877 de. Ama 628 de olmuyor.

yani bu sayede program hafızasının bir yerine 14 bitlik bir değeri saklıyabiliyor, ve istediğinizde okuyabiliyorsunuz.

CREAD
CWRITE komutları var protonda bunun için...

Tagli

Evet, 16F628'de bu özellik yok. Zaten bu özelliği olmayan PIC'lerde bootloader da olmaz.

Bir keresinde gözüme program hafızasını okuyabilen ama bu hafızaya yazamayan bir PIC takılmıştı tesadüfen ama şimdi modeli aklımda değil...
Gökçe Tağlıoğlu