Sizin de belirttiğiniz gibi, dahili EEPROM'un ömrü 100.000 yazma döngüsüne sahiptir. Bu bir tahmin değil - ATmega328'in çok önemli bir kısmı bu sayıya sorunsuzca ulaşacak. Daha önce üç işlemciyi test ettim ve hepsi sorunsuz bir şekilde 150.000 çevrime ulaştı.
EEPROM'un arıza modunu not etmek önemlidir. Çoğu "EEPROM destroyer" projesi, veriler hiç yazılmayana kadar tekrar tekrar okur / yazar. Bu noktadan önce, EEPROM hala zarar görecektir. Bu, makul bir süre boyunca saklanmayan verilerle kendini gösterir. Bu nedenle 100.000'den fazla yazma döngüsüne güvenmek akıllıca değildir.
EEPROM, ATmega'daki RAM'den farklıdır. Yazmak basit ya da hızlı değil, ancak bu karmaşıklığı kullanıcıdan gizleyerek arkadaşça bir Arduino kütüphanesinde yer alıyor .
İlk yönlendirme seviyesi, son derece basit olan EEPROM kütüphanesidir , sadece okuma ve yazma için iki işlev daha çağırıyor. Bu, burada bulunan eeprom_write_byte'yi çağırır .
Bu işlev satır içi derleme kullanır, bu nedenle kolayca anlaşılamayabilir. Kolayca anlaşılan bir yorum var:
Programlama modunu ayarla: sil ve yaz
Bu, EEPROM ile başa çıkmanın karmaşıklıklarından birine işaret eder - ona yazmak için önce onu silmeniz gerekir. Bu, EEPROM.write () öğesini çağırırsanız, yazdığınız değerden bağımsız olarak bir yazma döngüsü gerçekleştireceği anlamına gelir.
Bu, art arda 0xFF yazmanın 0xFF, 0x00,0xFF, 0x00 vb. Yazma ile aynı etkiye sahip olacağı anlamına gelir.
Bu sorunu çözmenin yolları var - değerin zaten aynı olup olmadığını görmek için EEPROM.write () 'den önce EEPROM.read () öğesini çağırmayı deneyebilirsiniz, ancak bu işlem ek zaman alır.
Aşırı EEPROM aşınmasını önlemek için başka teknikler de var, ancak kullanımları uygulamanıza bağlı.