Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

eeprom adresleme sırası nasıl ?

Başlatan ziyaretci, 14 Haziran 2012, 00:58:35

ziyaretci



Kolay gelsin...

Resimde eeprom programlama kartımın ara programı var.

00 FF FF FF FF...
01 FF FF FF FF...

Ben '00' adresindeki 3. byte'a  8 bitlik veri girmek istiyorum. Bunu nasıl sağlarım?

Bu eeprom adresleme sırası nasıl yani ? 

write_eeprom( i, veri);    " i " değeri  yani eeprom adresleri  0,1,2, ... A0,....

ben eeproma veri yazmak istesem mesela " write_eeprom(a0,0xAC); " mi yazmam gerekir yani misal olarak?

Hadi öyle diyelim. Bu resimdeki 00 adresindeki 1,2,3,4,5... vs. byte'ı kullanmak istiyorsam ne yapmalıyım.

 
Biraz karışık oldu ama inşallah anlarsınız derdimi.  :-[  Mantığıma yatıramadım bir türlü.  :-\

OG

Kullandığın dil için bir faydam olmaz ama bahsettiğin 00 adresi x bayte tanımı yanlış.

Oradaki 00'ın anlamı şu, hemen sağımda dizilmiş olan değerlerin adresi 00 dan başlıyor, toplam 16 adet deger var ve adresleri soldan saga şöyle,

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

0F ile bitti, bir sonraki deger 10 olur onu da bir alt satırdan baslatır. 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1F

Sonrası 20 dir ve o da bir alt satırdan başlar.

Yani en solda gördüğün 00 veya 10 veya 20 demek, hemen sağımdan başlayan değerin eeprom adresi bu demektir. Bir arttırarak sağa kay demektir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

tacettin

#2
#define adres_0 0
#define adres_1 1
#define adres_2 2
#define adres_3 3
int deger;



//yazma
write_eeprom(adres_3,deger);
//okuma

deger = read_EEPROM (adres_3);

ziyaretci

Alıntı yapılan: OG - 14 Haziran 2012, 07:28:17
Kullandığın dil için bir faydam olmaz ama bahsettiğin 00 adresi x bayte tanımı yanlış.

Oradaki 00'ın anlamı şu, hemen sağımda dizilmiş olan değerlerin adresi 00 dan başlıyor, toplam 16 adet deger var ve adresleri soldan saga şöyle,

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

0F ile bitti, bir sonraki deger 10 olur onu da bir alt satırdan baslatır. 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1F

Sonrası 20 dir ve o da bir alt satırdan başlar.

Yani en solda gördüğün 00 veya 10 veya 20 demek, hemen sağımdan başlayan değerin eeprom adresi bu demektir. Bir arttırarak sağa kay demektir.


  @OG teşekkür ettim.

Alıntı yapılan: tacettin - 14 Haziran 2012, 09:20:41
#define adres_0 0
#define adres_1 1
#define adres_2 2
#define adres_3 3
int deger;



//yazma
write_eeprom(adres_3,deger);
//okuma

deger = read_EEPROM (adres_3);


Örnek için teşekkürler @tacettin

ziyaretci

@OG

   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F


yani biz bu adres ler yerine değişken atarsak 

değişken 0 ise 00
değişken 1 ise 01 ....     Biz sadece değişkeni 1 artırsak bu sırasıyla işlem görür demi ?

OG

Zaten orada gördüğünüz bütün FF ler birer değer. Şu an degeri FF (255) ama kullanıma göre değişecek, eğer farklı değer atandı ise tabi. 

Bu değerlerin hepsinin farklı adresi var.
En üst ve en soldaki FF değeri 00 adresinde saklanıyor,
onun sağındaki FF değeri 01 adresinde,
sağındaki FF değeri 02 adresinde gibi
sağa kaydıkça adres 1 artıyor.

Ama içeriği, yani o adrese yüklü değer FF. Siz onu değiştirir 28 yaparsınız değiştirir 35 yaparsınız değiştirir C8 yaparsınız.

Yani ekranda görelen adresler, 00 dan 3F' e kadar adreslenmiş 64 tane hafıza var, ama şu an hepsinde yüklü değer FF yani 255, siz istediğiniz herhangi bir  adresin değerini istediğiniz şekilde değiştirirsiniz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ziyaretci

Alıntı yapılan: OG - 14 Haziran 2012, 17:49:53
Zaten orada gördüğünüz bütün FF ler birer değer. Şu an degeri FF (255) ama kullanıma göre değişecek, eğer farklı değer atandı ise tabi. 

Bu değerlerin hepsinin farklı adresi var.
En üst ve en soldaki FF değeri 00 adresinde saklanıyor,
onun sağındaki FF değeri 01 adresinde,
sağındaki FF değeri 02 adresinde gibi
sağa kaydıkça adres 1 artıyor.

Ama içeriği, yani o adrese yüklü değer FF. Siz onu değiştirir 28 yaparsınız değiştirir 35 yaparsınız değiştirir C8 yaparsınız.

Yani ekranda görelen adresler, 00 dan 3F' e kadar adreslenmiş 64 tane hafıza var, ama şu an hepsinde yüklü değer FF yani 255, siz istediğiniz herhangi bir  adresin değerini istediğiniz şekilde değiştirirsiniz.



Ozaman adres(değişkeni) 18 olduğunda , resimdeki 10 adresinin 2.FF si mi oluyor?

JOKERAS

Selam,

EEprom adresleri ardışık şekilde gider, 0, 1, 2, 3....
Şimdi bu ondalık sistemdeki gösterimi.
EEpromun içerisinde gördüğünüz değerler ise hexadecimal'dir
Dolayısı ile sizin 10 dediğiniz adres hex 0x10'dur,hex sistemde
0x10 adresine şu veriyi yaz dediğinizde o veri ondalık 16 sayısına denk
gelen hücreye yazılır.
Mesela:
Rasgele bir adrese veri yazmak için.

   uint8_t adr = 18;  // Ondalık 18, hex 0x12.
   int8_t data = 'A';
   Write_eeprom(adr, data);

   şeklinde bir kod yazdığınızda bu EEprom'un  18. hücresine yani
   0x12'ye 'A' yazılır.

Veya
Adres ofseti belirlenmiş bir noktadan ardışık yazma.

             uint8_t i,  adr_ofs = 0x15;
             int8_t data = 'B';
              for(i = adr_ofs; i < 32; ++i)
                    Write_eeprom(i, data);

               şeklinde bir kod yazdığınızda EEprom'un 0x15. adresinden başlayarak 32 tane 
               sıra ile 'B' yazar.
Yanlız ardışık yazmada şöyle bir sorun var,eğer sizin fonksiyonunuz byte yazma değilde page yazma
yapıyorsa yazacağınız veri EEprom'un page sınırı kadardır.



OG

#8
Alıntı YapOzaman adres(değişkeni) 18 olduğunda , resimdeki 10 adresinin 2.FF si mi oluyor?

Herhalde kafan iyice karıştı.

Şöyle düşün, belli sayıda saklama odacığımız var,


saklama odacığı

Kaç oda varmış, sayıp görebiliriz. Digital ortamda 0'ın da bir sayı olduğunu unutmuyoruz,


a

0-79 arası yani toplam 80 adet.

Bu odacıklar birer sayı saklamak için var.

(Saklanacak sayı değeri sınırlı, herhangi bir odaya 0-255 arası bir sayı yazabiliriz mesela 256 yazamayız. Sebebi 8 bitlik sayı sınırı var. 8 bit için max sayı ikili sistemde %11111111  dir bu da ondalık olarak 255 tir. Sekizi biti %00000000 = 0 ila %11111111 = 255 arası kullanabiliriz.)

-----------------

Diyelim ki 3 tane sayımız var (127, 55, 252) ve bunları saklayacağız.

3 adet odaya ihtiyaç var, odaları rastgele seçelim.
Mesela
3. oda,
21. oda,
59. oda.

Yerlerine bakalım odaların,


jpg upload

Bu odalara sayıları koyalım,


image hosting


Sayı değerleri bunlar ve yerlerine (oda nosuna göre) koyduk.

Yerleşen sayı değerlerini görüyoruz ama bir çırpıda oda numaralarını göremiyoruz, bu sebeple alttaki resme bakmak zorunda kalıyoruz.


a


Bir çırpıda görebilmek için oda noların şu başlangıç numaralarını,


  hosting

Sayı değerlerini gösteren tablonun başına yazarsak (oda noyu kolay bulmak için) ortaya bu çıkar,


  image

İşte bu resim ile senin aşağıdaki resim aynı şey,



Tek fark sayılar decimal (ondalık) değil de hexadecimal (onaltılık) sisteme göre yazılmış.

Onları dönüştürmesini yaparsın artık.


---------

Oda No= EEPROM Adresi
Sayı Değeri = EEPROM'a yerleşen değer.



FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ziyaretci

Alıntı yapılan: OG - 15 Haziran 2012, 01:47:04
Herhalde kafan iyice karıştı.

Şöyle düşün, belli sayıda saklama odacığımız var,


saklama odacığı

Kaç oda varmış, sayıp görebiliriz. Ancak digital ortamda 0 da bir sayıdır,


a

0-79 arası yani toplam 80 adet.

Bu odacıklar birer sayı saklamak için var.

(Saklanacak sayı değeri sınırlı, herhangi bir odaya 0-255 arası bir sayı yazabiliriz mesela 256 yazamayız. Sebebi 8 bitlik sayı sınırı var. 8 bit için max sayı ikili sistemde %11111111  dir bu da ondalık olarak 255 tir. Sekizi biti %00000000 = 0 ila %11111111 = 255 arası kullanabiliriz.)

-----------------

Diyelim ki 3 tane sayımız var (127, 255, 252) ve bunları saklayacağız.

3 adet odaya ihtiyaç var, odaları rastgele seçelim. Mesela 3. oda, 21. oda 59. oda.

Yerlerine bakalım odaların,


jpg upload

Bu odalara sayıları koyalım,


image hosting


Sayı değerleri bunlar ve yerlerine (oda nosuna göre) koyduk.

Yerleşen sayıları görüyoruz ama bir çırpıda oda numaralarını göremiyoruz, bu sebeple alttaki resme bakıyoruz.


a


Bir çırpıda görebilmek için oda noların şu başlangıç numaralarını,


  hosting

Sayı değerlerini gösteren tablonun başına yazarsak (oda noyu kolay bulmak için) ortaya bu çıkar,


  image

İşte bu resim ile senin aşağıdaki resim aynı şey,



Tek fark sayılar decimal (ondalık) değil de hexadecimal (onaltılık) sisteme göre yazılmış.

Onları dönüştürmesini yaparsın artık.

  Buraya kadar tamam anlamadığım nokta şu benim veya emin olmask istediğim diyelim.

mesela adres "59" veri yazacağız. write_eeprom( i, veri);   yani;

  write_eeprom(59, 226);   bumu yani?  Bu de (ki şimdiye kadar anladıklarıma göre bu olması lazım.)  eeprom hakkında şahsi mantığım tamamlanacak.



 

OG

Kullandığın dili bilmiyorum arkadaşlar cevaplar,
Proton'da,

EWrite 59 , [226]
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ziyaretci

CCS C kullanıyorum.Evet  galiba verdiğim örnek doğru. Çok teşekkür ederim @OG ve diğer cevap veren yardım etmeye çalışan arkadaşlarada.

JOKERAS

Selam,"OG".
Bir konu bu kadar güzel anlatılabilinirdi.
Bende bildiğim kadarı ile bir şekil çizmiştim ama siz işi kökten temiz bir şekilde
halettmişsiniz.