avatar_Mucit23

Uzun vadede çalışan cihazdaki eeprom sorunu.

Başlatan Mucit23, 03 Eylül 2016, 14:07:44

Mucit23

Selamlar

3-4 sene önce bir oyun salonu için tasarlamış olduğum bir cihaz var. Belki oyun salonlarında görmüşsünüzdür gidip kasadan RFID kartlara kredi yükletip sonra bu kartları oyun makinelerindeki okuyuculara okutarak makineleri çalıştırırsınız. Yapılan iş tam olarak bu. Ben yapmış olduğum yükleyici terminalde bazen eepromla ilgili sıkıntılar yaşıyorum.

Cihazda kullanıcının yüklediği kredi sayısı eepromdaki çeşitli hafıza bölgelerine yükleniyor. Bunun yanı sıra sistemde çeşitli düzeyde kullanıcı şifreleri var. Ve bunların hepsi eepromda tutuluyor.

Örneğin bir müşteri geldi ve kartına 10 kredi yükletti. Bu kredi rfıd kartın içine yazılırken aynı zamanda eeproma yazılıyor. Epproma yazılması çok önemli çünkü günün sonunda her yükleyici cihazda o gün içerisinde kaç kredi yüklenmişse düzgün bir şekilde kayıt altında tutulması gerekiyor.

Bazen ne oluyosa bilmiyorum ya okunurken yada yazılırken bir aksaklık oluşuyor ve eepomun ilgili bölgesine yazılmaması gereken değerler yazılıyor. Veya Sistem şifreleri karışıyor. Sistem bu durumdayken programlayıcı ile eepromu okuduğumda bozulan bölgelerin FF olduğunu görüyorum.

Bu durum %1 civarında ya gerçekleşiyor yada gerçekleşmiyor. Ama bu olasılık bile problem yaratıyor.

Kredi sayaçlarının yüklendiği bölgelere her kredi yüklenişinde yazılma yapılıyor. Bu bölgelerin belki yazma ömrü tamamlanmıştır diye düşündüm bir an ama Sistem şifreleri nadiren değişiyor. Fakat bu bölgelerde de bozulmalar yaşanıyor.

Bu tür sorunların önüne geçmek için yazılımda güncellemeler yapmam lazım. Bir takım önlemler almam lazım. Bu konuda ne önerirsiniz?  Benim aklıma ilk gelen eeprom adreslerini değiştirme, Yani kullanılmayan adresleri kullanmak gibi. Ete hocam sizin bir öneriniz var mı?

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Sorunun kaynağını bulmadan bu tür sorunları aşmak zor. Sorun kaynağı ya epromun kayıt ömrünü yitirmesi ya elektrik kesilmeleri ve ya parazitlerin yarattığı olumsuzluklar olarak sıralanabilir.  Her şeyden önce bir skop yardımı ile devrenin eprom kısmının yada genel beslemelerde parazit olup olmadığını iyice kontrol etmek en ufak bir olumsuzluğu varsa ortadan kaldırmak gerekir.
Bu tür sorunların %90'ı genelde eprom ömrünün dolmasından kaynaklandığını iyi biliyorum.
Programda ya atlamalı adresleme sistemi kullanılmalı yada çok sık kayıt yerine gerektiği zaman kayıt yöntemi geliştirilmelidir. Genelde pek çok kişi bu hataya düşüyor. 1 milyon kayıt çok fazla kesinlikle dolmaz deniyor ama öyle programlar gördüm bir günde bu ömrü bitirebiliyor. Unutmayalım program döngüleri çok hızlı çalışıyor her döngüde bir kayıt alınırsa kayıt ömrü çabucak bitiverir.  Sen yinede programın kayıt rutinlerini biraz daha incele derim ben.

Ete

Mucit23

Timer'dan kaynaklı bir sorun olması muhtemel. Çünkü kesmeyi kapatmıyorum.

Ozaman yazdığım program bayağı büyük. 18F452'nin program hafızasının %95'i dolu. Basit değişiklikler yapabilirim. Normalde Her yazmadan sonra 10mS bekliyorum. Ete Hocam Siz basic'i iyi biliyorsunuz. Basicde delay komutları işlenirken kesme oluşmasına müsade ediliyormu?

Benim şuan kesinlikle yapmayı düşündüklerim sırasıyla
1. Yazma yapılacaksa GIE=0 olacak. Yazma Bittiğinde GIE=1 olacak.
2. Write And Check işlemi uygulanacak. Yazma yapıldığı zaman doğru değerin yazıldığı doğrulanacak. Belki Checksum da ekleyebilirim ama onun için hafıza organizasyonunu değiştirmem gerekirki o biraz uğraştırır.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Delay komutu işlenirken kesme bayrağı set edilebilir ama program kesmeye delay bittikten sonra gider.
Yapman herekenleri doğru tespit etmişsin. Özellikle kesme konusu önemli. Şimdi hatırladım. Benzer bir sorun benimde başıma gelmiş ve yazma başlangıcıında global kesmeleri kapatıp o şekilde yazdırmış ve sorunu çözmüş idim.
Ete

Powered by EzPortal