Harici EEPROM kapasitesini nasıl bulabiliriz?

Başlatan gogoce, 28 Temmuz 2022, 20:04:07

gogoce

Merhaba,
Daha önce birkaç farklı programlayıcı ile çalıştım. Dikkatimi çeken nokta harici eepromlar konusunda oldu. mesela read komutu ile takmış olduğum 24XX serisi eepromu direkt olarak okuyup kodunu verebiliyordu.

Öğrenmek istediğim bu algoritma nasıl oluyor. Mesela pic ile eeprom kapasitesini bulabilen bir algoritma nasıl oluşturabiliriz?

Kullanacağım en büyük eeprom 24c512

Saygılar
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Ben genelde üzerinde yazan yazıları okuyup data sheet'ini buluyor oradan da kapasitesini öğreniyorum. Kapasiteye görede okuma algoritması geliştiriyorum. Hiç bir zaman eprom kapasitesini bulmak için algoritma oluşturulmaz. Kapasite önceden dökümanlardan tespit edilir ardından bu kapasiteye göre kullanım algoritması geliştirilir.
Bazı epromları kapasiteleri konusunda bilgi vereyim ona göre bir fikrin olur sanırım.

24C00 eprom yanlızca 128 byte lık hafızaya sahiptir. Okuma aralığı adresleme olarak 0-127 şekllinde kullanılır. ADres değişkeni Byte cinsinden olmalı.

24C01B eprom 1 KB hafızaya sahiptir. Okuma adres aralığı 0-1023 şeklinde verilir ve adres değişkeni word cinsinden olmalı.

24C02B eprom 2 KB hafızaya sahiptir. Okuma adres aralığı 0-2047 şeklinde verilir. Adres değişkeni word cinsinden olmalı.

24C16B eprom 16 KB hafızaya sahip, okuma adres aralığı 0-16383 aralığında olacaktır.

24C512 eprom 512K hafızaya sahip olup adres aralığı 0-524283 aralığında olacaktır. ADresleme 32 bit yapılıyor ve 2 ad. word değişkeni kullanılıyor.

Ete

alisumer

Alıntı yapılan: ete - 28 Temmuz 2022, 20:59:41Kapasiteye görede okuma algoritması geliştiriyorum.

Ete

hocam okuma algoritmanın amacı nedir bir kullanım örneği verebilirmisiniz ? örneğin yazarken aynı adrese sürekli yazmasın diye adresi değiştiren algoritma duymuştum .
Hep meraktan

ete

OKuma algoritmasından kastım eproma göre adresleme ve okuma şeklini belirleme olarak düşünmüştüm.
Konumuz I2C eprom. Peki I2C yazma ve okuma formatı nedir?
yazma için  I2CWRITE DataPin,ClockPin,Control,{Address,}[Value{,Value...}]{,Label}
Okuma için I2CREAD DataPin,ClockPin,Control,{Address,}[Var{,Var...}]{,Label}
 
komutlarını kullanıyoruz. Normalde komut içindeki Address parametresi 8 bitlik bir sayıyı ifade eder. Ancak bazı epromlarda kapasite yüksekliğinden dolyaı Address kısmı Word (16 bit) bazılarında ise 32 Bitlik Address değişkeni gerekitiryor.

Her zaman aynı adrese yazıp aynı adresten okuma yapılacak ise Address değeri bir kere değişkene verilir ve bir daha değiştirilmez. Ama bazı durumlarda adres sürekli değişir. Bu gibi durumlarda da Address değeri okunacak yada yazılacak yere göre değiştirilmelidir.
Bazen epromun hep aynı adresleri kullanılmasın diye farklı bölgelere yazma yapılması gerekir. Sonuçta epromların bir yazma ömürleri vardır ve ortalama 1 milyon adet kadardır. Bu rakama size büyük gelmesin. Öyle programlar gördümki bir çalışma döngüsü içinde sürekli eproma yazma yaparak neredeyse 10 dakika iinde epromun yazma ömrünü bitirebiliyorlar idi. Bazı programcılarda epromu değişken hafızası gibi kullanmayı sever. Her şeyi eproma kayıt eder kullanırken epromdan okurlar. Halbuki işlemcinin Flash hafızası var onu neden kullanmazlar anlamam. Her neyse  eproma sadece gerektiği zaman yada bilgi değiştiği zaman kayıt yapılmalı. Çok sık değişen bilgileri eproma kayıt etmemeli yada değişimin durdurğu anda bir tek kayıt yapılmalı. Sürekli kayıt ederseniz ömür biter bir yerde.

Epromun değişik bölümlerini (değişken adresleme) kayıt için kullandığınız zaman adres değerini sabit bir adreste tutarsınız. Örnek vereyim. Epromun sıfır nolu adresine hangi eprom adresine kayıt yaptığınızı yazabilir oradan okuduğunuz adresten de okuma yaparak işinizi görebilirsiniz. Örneğin epromun sıfır adresien 100 yazmış isem epromun 100 nolu adresine bilgilerimi kayıt ettiğin anlaşılır. Buna benzer algoritmalar düşünülebilir.

Aklıma gelenler bunlar.

Ete


mehmet

#4
E²prom hafızasını bulma konusuna öylesine
baktım internetten. En mantıklısı alttaki oldu.

https://www.avrfreaks.net/forum/best-way-detect-eeprom-size

Ben enerji kesilince, gerekli bilgileri e²proma kaydetme
yöntemini kullanmayı seviyorum.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

onurinci

Mehmet çok ince bir çizgiye dokunmuşsunuz,yazılımcıların çoğu nedensizce E2 konusunu pass geçiyor.ETE hocam sağolsun projelerime bu olanağı ilave etti,bir çok devre gördüm internette ,belli bir ayar gerektiren,atıyorum en basiti Preamplifier bas tiz ayarı,adam yazmışta yazmış GLCD şovlarımı istersin bar grafiklermi ,fuzuli her şey mevcut .gerilimi kes yaptığın bütün ayar gitti,iki düğme ile DAC kontrolü yapmış uygun pozizyonu her gerilimde tekrar vereceksin,arkadaşım ben oraya potansiyometre koyarım geçerim,üstüne yaza yaza bozuluyor tezinide çürütebilirim 15 yıldır yaptığım hiç bir proje bozulmadı.artık 10F serisi ile oynamayı seviyorum,havalar soğusun ETE hocamdan iç E2 desteği olmayan bu işlemcilere dışarıdan SCA SDL nası yazar okuruz onu öğrenmeye çalışacağım...

gogoce

Alıntı yapılan: ete - 28 Temmuz 2022, 20:59:41Ben genelde üzerinde yazan yazıları okuyup data sheet'ini buluyor oradan da kapasitesini öğreniyorum. Kapasiteye görede okuma algoritması geliştiriyorum. Hiç bir zaman eprom kapasitesini bulmak için algoritma oluşturulmaz. Kapasite önceden dökümanlardan tespit edilir ardından bu kapasiteye göre kullanım algoritması geliştirilir.
Bazı epromları kapasiteleri konusunda bilgi vereyim ona göre bir fikrin olur sanırım.

24C00 eprom yanlızca 128 byte lık hafızaya sahiptir. Okuma aralığı adresleme olarak 0-127 şekllinde kullanılır. ADres değişkeni Byte cinsinden olmalı.

24C01B eprom 1 KB hafızaya sahiptir. Okuma adres aralığı 0-1023 şeklinde verilir ve adres değişkeni word cinsinden olmalı.

24C02B eprom 2 KB hafızaya sahiptir. Okuma adres aralığı 0-2047 şeklinde verilir. Adres değişkeni word cinsinden olmalı.

24C16B eprom 16 KB hafızaya sahip, okuma adres aralığı 0-16383 aralığında olacaktır.

24C512 eprom 512K hafızaya sahip olup adres aralığı 0-524283 aralığında olacaktır. ADresleme 32 bit yapılıyor ve 2 ad. word değişkeni kullanılıyor.

Ete


Hocam sanirim yanlis anladiniz. Mesela uzeri silinmis yazilari okunmayan bir eepromun kapasitesini bulabilirmiyiz diye sorumu yineliyorum. Bu konuda cesitli algoritmalar ortaya atilmis sizin yada forumdaki ustalarin bilgisi varmidir diye sormak istedim.
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

ete

Büyle bir program aihtiyacım olsa şöyle düşünürdüm.
Öncelikle Byte cinsinden adres vererek ama adresi de 128 ne büyk tutup (mesela 200 gibi) belirli bir sayı yazmaya çalışır ardından yazdığımı okurdum. Şayet okunan ile yazılan eşit ise ilgili adres mevcut anlamına gelecektir. Bu sefer adresi word olarak verip öncelikle 300 adresine bir bilgi yazıp geri okurdum. Yine okunan yazılan aynı ise adresi büyüterek ama büyütürkende 1K (1024) 2K (2048) 4K (4192) gibi adresleri deneyerek yazılan ile okunan eşitmi diye bakmak ve eşitliğin bozulduğu noktaya kadar gitmeek gerekir. Çok zor olmasa gerek. Tabiiki enbüyük eprom hafızası neyse ki sanırım 32 bitlik adres ile yazılıp okunabilen adresleri tespit ederek epromun hafıza kapasitesi konusunda bilgi edinilebilir.

Ete

onurinci

bende StandAlone harici programlayıcı var. kapasitesinin ne olduğunu bilmediğim E2Prom'u şöyle buluyorum,örnek programdan en yüksek kapasiteli olduğunu bildiğim 24C1024 yada 24C512'yi seçiyorum.ve blank yap diyorum.bu arada program cihazı soruyor Fill yaparken hücreleri FF ilemi doldurayım diye evet diyorum,bakıyorum son adrese kadar FF yapmış,sonra yine Fill yap neyle doldurayım diye sorduğunda 00 yap diyorum,ve tekrar okuyorum bakıyorum 3FFF yapabilmiş diğer adresler ise hala FF olarak duruyor,mantık yürütüyorum 16383 demek 24C16 demektir diye...

gogoce

Alıntı yapılan: ete - 01 Ağustos 2022, 19:03:13Büyle bir program aihtiyacım olsa şöyle düşünürdüm.
Öncelikle Byte cinsinden adres vererek ama adresi de 128 ne büyk tutup (mesela 200 gibi) belirli bir sayı yazmaya çalışır ardından yazdığımı okurdum. Şayet okunan ile yazılan eşit ise ilgili adres mevcut anlamına gelecektir. Bu sefer adresi word olarak verip öncelikle 300 adresine bir bilgi yazıp geri okurdum. Yine okunan yazılan aynı ise adresi büyüterek ama büyütürkende 1K (1024) 2K (2048) 4K (4192) gibi adresleri deneyerek yazılan ile okunan eşitmi diye bakmak ve eşitliğin bozulduğu noktaya kadar gitmeek gerekir. Çok zor olmasa gerek. Tabiiki enbüyük eprom hafızası neyse ki sanırım 32 bitlik adres ile yazılıp okunabilen adresleri tespit ederek epromun hafıza kapasitesi konusunda bilgi edinilebilir.

Ete

teşekkürler hocam deneyeyim
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Powered by EzPortal