Eeprom

Başlatan Serk@n, 08 Şubat 2021, 08:51:09

Serk@n

Herkese iyi çalışmalar diliyorum.

Eepromlar hakkında birkaç sorum var:

1. Dahili veya harici kullanılan Eepromların bilgi kağıtlarında kullanım ömürleri 10.000 kez gibi rakamlarla açıklanmış. Bu ömür bilgisi, bilgi yazmak mıdır yoksa okumak da dahil midir

2. Ülkemizde telsiz üreten meşhur bir firmanın bir telsizini inceledim. İçinde küçük bir 3,7V pil var. Bilgilerin korunmasına yarıyor. Eeprom varken böyle birşeye neden ihtiyaç duymuş olabilirler?
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

ete

Epromların bir kaç çeşidi bulunuyor. Flash tipi dediğimiz ve elektrik kesilsede bilgileri saklayan tiplerde yazma ömrü vardır. Bu ömür yaklaşık 1 milyon yazmaya eşdeğerdir. Üç aşağı beş yukarı bu rakam doğrudur. Senin 10.000 dediğin yanlış olsa gerek zira bu kadar kısa ömrü olanı görmedim ben.
Pic epromları (pek çoğu) bu eproma örnektir. Yazarsınız elektiriği keserseniz bilgi hafızada sabit olarak saklanır. Yeniden elektrik verdiğinizde okuyabilirsiniz.
Okuma işlemi ömürü bitirmez yanlızca yazma ömürü tüketir.

Daha sık yazma ihtiyacı duyulan modellerde bilgiler hafıza entegresi voltaj ile aktif tutularak (flip-flop tipi hafızalar) yazma ömürleri neredeyse sınırsız hale getirilmiştir. Bu tür entegrelerde hazfızanın bilgiyi saklayabilmesi için elektiriğinin kesilmemesi gerekir. Telsizde görülen örnek budur.

Ete

aRci

herkese merhaba
ben projemde 24c32 eeprom kullanıyorum yazma işlemi çok olmasa da dakikada defalarca ve sürekli bir okuma gerektiği durumlar gerçekleşiyor. okuma için bir sınırlama olmadığını sizden duyunca rahatladım :)

projem aslında bir plc gibi davranıyor devrenin asıl programı kullanıcı tarafından harici olarak yüklemiş olduğu programı eepromdan belli koşullarla hep aynı adresden başlayarak sırası ile belirli bir noktaya kadar okuması gerekiyor. bu program uzadıkca sistemde tepki süresi yavaşlıyor tabi saniyeler seviyesinde değil ama gözle görülür bir hal alıyor hızlandırma için bir arayıştayım

pic18f4550 20mhz pll yi araştırıyorum henüz ona sıra gelmedi

ete

#3
Okuma işinide hızlandırabilirsin. Bir standart okuma işleminde 8 bitlik veri alındıktan sonra bir stop biti ardından acknowledge denilen karşılıklı el sıkışma işlemi yapılıyor.
İşin bu kısmını atlatırsan okuman gözle görülür hızlanabilir. Bu eprom görünüşe göre 64 er bitlik sayfalar halinde gerektiğinde page (sayfa) write (yazma) yapılabiliyor. Prensip aynı ver yazmada 8 bit yazmadan sonraki kontrol mekanizmasını çalıştırmadan 64 biti yazmak ve 64 bitin sonunda bu işi yapmak şeklinde uygulanıyor.
Veri uzunluğun nedir bilmiyorum ama okuduklarını bir diziye alabilirsen ve bunuda 64 elemanlı bir dizi şeklinde yaparsan epeyce hızlanabilirsin.
Biliyorsun okuma işleminde (Basic den bahsediyorum) I2CREAD DTA,CLK,$A0,0,[STR A\64]
komutu ile 64 byte okuyup bunu A dizisine verebilir sonrada bu A dizisinden elemanlarını alabilirsin.
Bu işlem sana epeyce hız kazandıracaktır. KOmut satırında görülen 0 sayısı adresi belirler. İlk okuma sıfırdan itibaren sonraki ise 64 den itibaren yapılır bir sonraki 128 den itibaren her seferinde 64 artırırsın adresi. Bir anda 1K - 2K .. gibi bilgiyi çok hızlı okuyabilirsin.
İşlemci hızını ne kadar artırsanda I2C epromların çalışma frekansı en fazla 400Khz olabilmektedir. Bunuda unutma.

Ete

aRci

cevap için teşekkürler okunan veri uzunluğu sabit değil okunan her değer kolntrol edip içinde belli bir karekter ( 13 ) bulduğunda okunan bilgileri işleyip daha sonra kaldığı yerden tekrar okumaya başlaması gerekiyor. dediğiniz yöntemi deneyeceğim

ete

#5
yine de byte byte okuyup içindeki karekterleri kontrol etmektense 64 tane birden okuyup index değişkeni kullanılarak içi kontrol edilebilir ve bu işlem kullandığın yöntemden en az 2 kat daha hızlıdır.

Ete

aRci

merhaba ete hocam dediğiniz yöntemi kullandım ve ilk denemem de yarı tarıya değişiklik oldu
bu ekran görüntüsünde Cycle yazan satır hafızadan okunan bilgilerin tamamı okunup işlemlerin yapılıp tekrar başa döndüğü aralığı gösteriyor. değer timer ile ölçüyorum ve yanlış ayarlamadı isem 35ms olarak değer dönüyor.
 
sizde kontrol edebilir misiniz. 20mhz de bana yaklaşık 5ms aralıklarla kesme oluşturmalı küçük hata için aralık biraktım.

     T08BIT  = 1  '8bit = 1 /16bit = 0 Zamanlayıcı Seç
    T0CS    = 0  'Saat Kaynağı T0CKI = 1 / CLKo = 0
    T0SE    = 1  'Kenar Seçme Yükselkten alta geçiş = 1
    PSA      = 0  'Ön yükleyici Ön ölçekleyiciyi atanmamış = 1
    TOPS2= 1:TOPS1 = 1:TOPS0 = 1

kesmede ön yükleyici değeri
TMR0IF = 0
    TMR0  = 156

ete

TMR0 ile 20 Mhz OSC frekansında her 5 ms de bir kesme yaratmanın yolu iki tane;
1. Bölme oranı 1/128 ve TMR0 ön yükleme değeri TMR0=60 şeklinde olmalı
   OPTION_REG  =%00000110    '00000XXX 000=1/2 , 001=1/4, 010=1/8 , 011=1/16 , 100=1/32 , 101=1/64 , 110=1/128 ,111=1/256

2. Bölme oranı 1/256 ve TMR0 ön yükleme değeri TMR0=158 şeklinde olmalı,
   OPTION_REG  =%00000111    '00000XXX 000=1/2 , 001=1/4, 010=1/8 , 011=1/16 , 100=1/32 , 101=1/64 , 110=1/128 ,111=1/256

Bit - bit register ayarlama bana bir anlam vermiyor resmin bir kısmını görmeni sağlıyor. Ama tüm registere byte değeri vererek tüm resmi görebiliyorsun. Bu şekilde kullan rahat edersin.

Ete

Serk@n

Bir de eprom yazarken yanlışlıkla bu işlemi sonsuz bir döngünün içinde yaparsak ömrünü hemen bitiririz sanırım. Dikkatli olmak gerekiyor.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

ete

Ömür genellikle BASLA ile GOTO BASLA satırları arasında epromada her defasında yazma yapılıyor ise bitiyor. Buna dikkat etmek gerekir.
Programın kontrol ettiği işlere bağlı olarak söz konusu aralık genelde 1-5 ms lik sürelerde çalışıyor. Her seferinde yazma yapılırsa ve her yazmaya 10 ms lik yazma gecikmesi koyulursa ortalama 1 sn de 100 yazma, 1 dakikada 6000 yazma ve 1 saatte 360.000 yazma yaparsın. Yaklaşık 3 saatte de ömrü bitirirsin.

Ben genellikle YAZ isimli bir bit kullanırım . Kayıt edilecek bilginin değişimi durduğunda YAZ=1 ise eproma yazdırırm. Her seferinde yazdırma yerine bu usulde ömürden epeyce tasarruf sağlıyor.

Ete


Serk@n

#10
Bir de şu durum var:

Burada acaba ömrü dolan adresler midir yoksa komple eprom mudur? Bir zaman sonra adresleri değiştirmek de epromun ömrünü arttırabilir mi?

Diğer merak ettiğim konu da, i2C pinleri için kullanılan pull-up dirençleri gördüğüm devre şemalarında hep farklı değerlerde olması.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

ete

Arada bir adres değiştirmek hatta bu işi otomatiğe bağlayıp belirli sayıda kayıttan sonra kayıt adresini değiştirmek epromun ömrünü değil kullanım süresini artırır. Zİra sürekli kayıt için kullanılan adresin ömrü bitiyor aslında epromun geri kalanına bir şey olmuyor muhtemelen.
Bu takttiğide kullandığım olmuştur. Bir kayıt sayıcı tutarak belirli sayıdan sonra adres değiştirip aktif adreside sıfır nolu adreste tutarak eprom kullanılabilirliğini artırmıştım.

Pullup direncinin bir görevi var bağlı olduğu hattı HIGH da tutmak. Hat zoraki low olduğunda fazla akım çekilmesini engellemek amacı ile farklı dirençler kullanılabilir. Sonuçta çok küçük değerlerin (ohm seviyesinde) haricinde her değer o hattı HIGH da tutabilir. Ama genelde kullanılan değer 4K7 dir ve hemen hemen bütün cihazlar için geçerlidir.

Ete

Serk@n

Çok teşekkür ederim.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

aRci

tekrar dan merhaba

ekran görüntüsü yüklenmemiş onu ekliyorum.




buda simülasyon görüntüsü.



denemeyi pc de yapınca herşey güzeldi ama uygulamada devredeki displayler de titremeye sebep oldu bende tek seferde 10 byte okutarak uyguladım performansında çok bir kayıp olmadı ama bazı problemlere sebep oldu onlar içinde oturup düzeltmeler yapacağım.
iyi çalışmalar.

Serk@n

Sn. Ete Hocam bir sorum daha vardı size ama cevaplamak isterseniz...

Bir arkadaşım benden ricacı oldu. Printeri belli bir çekimden sonra kendini kilitleyip çıktı alamıyormuş. Kullanıcının yazıcıyı servise bakıma götürmesi için üretici firma tarafından böyle bir yöntem kullanmış. İçinde bir eprom kartı var. Yani eprom içindeki dataları çözebilirsem çıktı sayısını sıfırlayacağım. Bunu yapan firmalar da varmış.

Sizden teknik bir destek için değilde bu konudaki tecrübenizden, meslekî etiklik açışından istifade etmek istiyorum. Sonuca ulaşırım yada ulaşamam. Ulaşamazsam epromu arkadaşa iade ederim.

Size sorum, sizce bu yapmayı düşündüğüm şey elektronikçilik açısından etik bir şey midir?

Veya üretici firmanın yaptığı şey etik midir? Bakım zamanı gelen bir cihazın ekranında bir uyarı olsa yetmez mi ki, neden komple cihazı kullanılamaz hale getiriyorlar?
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Powered by EzPortal