16F877A Eeprom ve elektrik kesintisi?

bagztov

Üye
Katılım
5 Nis 2018
Mesajlar
182
Puanları
6
Yaş
26
Herkese merhaba, iyi forumlar.
Ben Pic ve Lcd Ekran ile bir proje yaptım. Ekran üzerinden istediğim parametlerleri butonlar ile ayarlayıp kaydediyorum. Eeproma kaydediyorum. Enerji kesilene kadar sorun yok ama enerji kesildikten sonra ayarlar ilk haline geri dönüyor.
Dış kesmeyi başka bir şey için kullanıyorum. Aynı şekilde RB4..7 Kesmesi de öyle. Aslında RB4..7 kesmesi devamlı kullanıldığı için her RB4..7 kesmesi oluştuğunda Eeproma veriyi yazdırsam sorun düzelir gibi geliyor ama sürekli yazdırma yapınca da eeprom'un ömrü azalıyormuş diye okudum.
Elektrik kesintisini anlamanın daha farklı bir yolu var mıdır acaba? Kesinti oluştuğunda kondansatör ile bir süre enerjili kalan pic voltaj sıfıra yaklaştığında kesme oluşturma ve verileri eeproma yazdırma nasıl yapılabilir?
Cevaplar için şimdiden teşekkür ederim. Herkese iyi günler, iyi forumlar.
 
Öncelikle Elektrik kesildiğinde picin canlı kalması için +5v ve vdd arasına sırayla bir doğru polarize bir diyot ve 1000uf kondansatör gerekiyor.

Daha sonra iki seçeneğin var enerji kesintisini anlamak için ya harici kesmeyi +5v a doğrudan bağlayıp 0 olduğunda kondansatör dejarj olana kadar eeprom kaydını yapacaksın yada timer kurup herhangi bir input pinini kontrol edeceksin.

Daha mantıklı olan ise şudur. Bunu forumda bir arkadaşa daha önce yaptık. DS1302 veya DS1307 gibi saat entegrelerinde batarya backuplı ram vardır yani sınırsız yazma özelliği vardır. Onlardan bir tane bağlayıp eeprom yerine onun ramine istediğin sıklıkla kaydedebilirsin.
 
Öncelikle cevabınız için teşekkür ederim. Dediğiniz yolları deneyeceğim. Saat entegrelerinin ramlerini nasıl eeprom gibi kullanacağız? O konuda hiçbir bilgim yok ve ilk defa sizden okuyorum. Nasıl yapılıyor?
 
Programda eproma yazdığınız değerleri elektrirk açıp kapattığınızda aynı değerleri okuyabiliyormusunuz?
Eğer okuyorsanız tamam ve Elektrik gittiğinde son değerleri almak istiyorsanız size anlatacağım sistemi Büyük hvac sistemlerinde kullanıyorlar.
220V röle ile kolayca çözeceksiniz. 220 ile röleyi besleyin COM ve NC uçlarından kuru kontak yani buton gibi alın. normalde enerji yokken bunlar kısa devredir. Enerjilenince kontaklar açılır elektrik kesilince kısa devre olur. Beslemenize parelel 1000 / 2200 Uf bağlayın enerji kesilince kontağı okuyup kayıt edersiniz. Yoksa beslemeden alırsan elektrik bilgisini kondansatörden dolayı geç okursun ama iş işten geçmiş olabilir.
 
Öncelikle cevap verdiğiniz için teşekkür ederim ancak sorunu yazılımsal olarak hallettim. Yine de çok teşekkür ederim. En aşağıya başkaları da aynı sorunu yaşarsa belki çözüm olur diye bulduğum yolu yazacağım. Tekrardan teşekkür ederim tüm vakit ayırıp yanıt yazanlara. İyi forumlar.
 
dediğiniz çok güzel ama birşeyi atlıyorsunuz biz devreyi görmüyoruz belki çıkışta birden fazla led vs. akım tüketecek elemanlar varsa kondansatör dayanmaz
 
Sorunu çözdüm: Oluşturduğum arayüzde ayarları kaydet diye bir fonksiyon oluşturmuştum. İçinde eğer x pini lojik 1 olursa parametreleri eepromdaki ilgili adreslerine yazıyor ve ekrana ayarlar kaydedildi yazıyordu. İlave olarak Main (Ana program) yani While döngüsünden önceki fonksiyona ilgili değişken ve adresleri read_eeprom komutu ile okuttum sorun çözüldü. Enerji kesilse bile değişken en son aldığı değeri her ana fonksiyonu çalıştırdığında (yani pic enerjilendiğinde) ilgili adreslerden okuyor. Herkese iyi forumlar dilerim. Umarım bir gün aynı sorunu yaşayan birinin işini çözer.
Tekrardan iyi forumlar.
dediğiniz çok güzel ama birşeyi atlıyorsunuz biz devreyi görmüyoruz belki çıkışta birden fazla led vs. akım tüketecek elemanlar varsa kondansatör dayanmaz
Merhabalar. Sorunu yazılımsal olarak hallettim zaten gerek kalmadı. Ama yine de sağolsun vakit ayırıp yazmış. Size de fikir kattığınız için teşekkür ederim. İyi forumlar.
 
dediğiniz çok güzel ama birşeyi atlıyorsunuz biz devreyi görmüyoruz belki çıkışta birden fazla led vs. akım tüketecek elemanlar varsa kondansatör dayanmaz
kondansatör 1000uf yada 2200uf takarsan kesme ile ms zaman ile işlem çoktan bitmiş olacaktır. 10 Mhz ile çalışıyor ise 10/4 = 2,5 Mhz de yani saniyede 2.500.000 kod işlemeyi düşünürseniz us zamanda işini halleder.
 
teoride evet bu dediğiniz doğru ama devresini hayal edince 2-3adet led butonlara konulmuş pull dirençler yine de denemek lazım
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…