ATMEL firmasının üretmiş olduğu, ARDUINO UNO‘lar üzerinde de kullanılan ATmega328 kodlu mikro kontrolcüsünün (kendisine bundan sonra işlemci diyeceğiz) datasheet‘inde de belirtildiği üzere, bu işlemcinin üzerinde bulunan EEPROM’larda belirli bir yazma/silme limiti bulunmaktadır.

 

Aslında bu limit, EEPROM’ların tümünde zaten bulunan bir limittir.

Bildiğiniz üzere EEPROM’lar elektriksel olarak yazılabilen ve silinebilen ürünlerdir. Dolayısı ile her yazma ve her silme işlemi elektriksel bir işlem neticesinde oluşturulur. Bu sayede, EEPROM denen ürünler, elektrik kesilse bile üzerlerindeki bilgiyi saklayabilirler ve unutmazlar. Unutmayın unutulanlar unutanları asla EEPROM.

Örneğin ATmega328 işlemcisinin üzerindeki EEPROM‘un üzerindeki bilgiyi yaklaşık 20 yıl boyunca tutabildiği efsanelere konu olmuş bir durumdur.

Ancak az önce bahsettiğim üzere, elektriksel olarak bazı bilgileri yazmak ve silmek demek, birşeylerin ömrünün elektriksel olarak yok olması demektir.
Bu nedenle ATMEL’in dokümanlarında belirttiği üzere ATmega328 üzerindeki EEPROM‘lar “100binden fazla yazma ve silme ömrüne sahiptir“.

ATMEL’in datasheet’inde de belirttiği üzere bu EEPROM‘lar en az 100bin defa GÜVENLE yazılabilir ve silinebilir.
Ancak önemli olan nokta şu ki ; ATMEL, 100bin defa güvenle yazılıp, silinebildiğini belirtmekte ancak 100bin’den sonrasına garanti vermemektedir.

Dolayısı ile ARDUINO‘nun kendi EEPROM‘una yazarken dikkatli yazın. Ne kadar az yazma ve silme, o kadar EEPROM ömrü demektir.

Az önce, bu EEPROM’u “öldürmek” için uzun uzun çalıştım.
Arduino EEPROM’una yaklaşık 60-65 dakika boyunca, her defasında 1 byte veri olmak üzere toplamda 1 milyon 200bin defa YAZMA işlemi yaptım.
Yaklaşık 30 dakika bekleme süresinden sonra, EEPROM’un içine baktığımda (okuma işlemi yaptığımda), bilgilerin hala durduğunu gördüm.

Dolayısı ile ATMEL’in 100bin defa dediği olay, en az 100bin defadır. Ancak yine de 100binlerden sonra, birşeylerin ters gidebileceği düşüncesini unutmayın.

Bir de ATmega328’in EEPROM’unun hafıza kapasitesinin 1024 byte olması ile alakalı bir iki notum olur sizlere.

Bilindiği üzere bu EEPROM’un hafızası maximum 1024 Byte.
Yani buna en fazla 0’ıncı adresten başlayıp, 1023’üncü adrese kadar en fazla 1 byte olmak kaydı ile toplamda 1024 byte yazabilirsiniz.

Adres olarak verdiğiniz 1024 ve üzerindeki her adres, göreceli adreslere dönüştürülecek ve EEPROM’un ilgili adresine öyle yazılacaktır.
Yukarıdaki cümleyi anlamadınız değil mi ? Şimdi ben okudum, ben de anlamadım. Problem değil, cümle içinde kullanalım :

Örneğin
Adres olarak 1023’üncü adrese A harfi yazarsanız bu 1023’inci adrese yazılır. (Adresleme 0’dan başladığı için aslında 1024’e yazmış oluruz)
Adres olarak 1024’üncü adrese A harfi yazarsanız bu 0’ıncı adrese yazılır. (Adresleme 0’dan başlar ve 1023’de biter. Ama biz 1024 verdiğimiz için ve böyle bir adres olmadığı için bu 0’ıncı adrese yazılır)
Adres olarak 1025’inci adrese A harfi yazarsanız bu 1’inci adrese yazılır.(Adresleme 0’dan başlar ve 1023’de biter. Ama biz 1025 verdiğimiz için ve böyle bir adres olmadığı için bu 1’inci adrese yazılır)
Adres olarak 2000’inci adrese A harfi yazarsanız bu, 976’ıncı adrese yazılır. (Adresleme 0’dan başlar ve 1023’de biter. Ama biz 2000 verdiğimiz için ve böyle bir adres olmadığı için bu 976’ıncı adrese yazılır)

Bu konuda herhangi bir sorunuz olursa, şu aşağıdaki yorum kısmına yazmanız yeterli.