avatar_jun

Eprom kullanımı

Başlatan jun, 26 Mayıs 2016, 19:03:09

jun

Merhaba arkadaşlar,16f877a ile yapmış olduğum ürün sayıcı devrem var,sorunsuz çalışmakta.Sıkıntım sayıcının eprom ömründe.Her bir saymadan sonra eproma kayıt yaptırıyorum,okuma ve yazmada sorunum yok fakat günde 2000 sayma durumu var,hal böyle olunca bir kaç ay sonra epromun ömrü bittiği için değeri tutmamaya sıfırlamaya başlıyor.Programın  saydırma,kayıt ve okuma kod blogu aşağıda.Değerli ustalarım epromun daha ömürlü olması için ne gibi bir sistem,mantık kullanmalıyım,yardımcı olursanız sevinirim Teşekkürler.
    
BASLA:   
     
     
     IF TUSC=0 THEN SAYI=0  ' RESET
     pause 100
     gosub yaz
     IF TUSA=0 then         ' ARTTIRMA
     SAYI=SAYI+1
     pause 100
     gosub yaz
     IF SAYI=10000 THEN SAYI=0   
     ENDIF
     IF TUSD=0 then         '     SAYI=SAYI+100
     pause 100
     gosub yaz
          IF SAYI=10000 THEN SAYI=0
     ENDIF
   
          IF TUSB=0 then          'AZALTMA           
        SAYI=SAYI-1
        pause 100
        gosub yaz
     IF SAYI=65535 THEN SAYI=9999
        ENDIF
         
YAZ:                     'ALT PROGRAMLAR
      write 0, SAYI.lowbyte
      write 1, SAYI.HIGHBYTE
     
      RETURN
     
OKU:
      READ 0, SAYI.LOWBYTE
      READ 1, SAYI.HIGHBYTE
     
      RETURN
           
      END
                 
                 

ete

Sürekli GOSUB yaz diyeceğine, Önce bir YZ isimli bit değişkeni tanımla
Sonra sayının artmas yada eksilmesi yada sıfırlanması durumunda YZ=1 yap.
Program önce RESET tuşuna basılmışmı baksın. Basılmış ise Sayı sıfırlansın ve YZ=1 yapsın.
Sonra ARTIRMA tuşuna basılmışmı ona baksın . Basılmış ise Sayı artsın ve Yz=1 yapsın
Sonra EKSILTME Tuşuna basılmışmı baksın. Basılmış ise sayı bir eksilsin ve YZ=1 yapsın.
Sonra 100 artırma tuşuna baksın . Basılmış ise sayı değerine 100 eklensin. (Ama sen ekletmemişsin!!!!!!!) ve YZ=1 yapsın.

Bütün bunlardan sonra YZ=1 ise gidip Sayı değerini eproma yazsın. YZ=0 olsun bu yazma kısmında.En azından bir kaç lüzümsuz yazma işleminden kurtulmuş olursun.
Bu işlemden sonrada sistem başa dönsün. (Sende başa dönme komutuda eksik gözüküyor!!!!!!!!!!!)

Bu çözüm pek işine yaramaz ise sayı değerinindeki her 10 luk artışta digip kayt yapsın. Yok olmaz diyorsan o zaman elektrik kesilmesini kollaman gerek. Yalnzıca o zaman gidip kayıt alman gerekiyor.  Şebeke den küçük bir trafo ile 3-4V luk DC volt elde edeceksin. Ama bu devrenin regülasyonu 1Mf gibi çok küçük dğerlikli bir kondansatörle olacak. Böylece şebeke kesilirse gerilim anında sıfırlanacaktır. Bunu pic'in boş bir pinine gireceksi ve mümkünse bu girişi bir kesmeye bağlayacaksın. na besleme kaynağına en az 6800 Mf kondansatör bağlayacaksın. Bu kondansatör şebeke kesilse bile eproma kayıt yapacakkadar sana zaman sağlayacaktır. Şebekein kesilmesini diğer voltajın kesilmesinden anlayıp hemen Sayı değeriniş kayıt edecek ve orada sonsuz döngüye girip voltajın gitmesini bekleyecek program. Böylece eprom ömrün sonsuza kadar sana yeter.
Ete

Maxim

benim düşüncem de ete hocanınkine benzer
her seferinde yazmak yerine, eski sayı artmış veya eksilmiş yada değişmiş ise
bir bekleme yapıp yazmak, mesela 3sn beklemek ve sonra yazmak eeproma
bu şekilde eeprom ömrü kat kat uzayacaktır.

artık enerji tam o 3sn bekleme süresi içerisinde kesilirse yapacak birşey yok
belki zamanı düşürebilirsin, artırırsanda eeprom ömrü daha daha uzayacaktır.




jun

Yardımlarınız için çok teşekkür ederim risk almamak açısından picin enerji kesilmesine bağlı bir eklenti yapsam daha iyi olacak galiba,deneyip sonucu paylaşacağım.

Powered by EzPortal