Pic Basic Pro ile 24c512 eeprom Nasıl Kullanılır?

Başlatan alexxcan1905, 30 Haziran 2011, 13:14:06

alexxcan1905

Merhaba arkadaşlar.Ben çok yazılım yazdım fakat hiç eeprom kullanmadım.Şimdi aklımda bir kaç soru var.
1) 24C512 yi nasıl bir teknikle anlayarak 256kilobit(yanılmıyorsam) anlayabiliyoruz?
2) Mesela ben değişken tipini word diye tanımladım.
3)0(sıfır)'dan kaça kadar adres kutucuğum oluyor ve bu nasıl hesaplanıyor?Çünkü bayt olarakda tanımlayabiliriz hesabını nasıl olduğunu bilmeme gerekiyor.
4)Diyelimki "deger Var Word" dedik.Deger=856 sayısını verdik.Ve bunu 10.adrese yazdık.Bu sayı kaç kilobit değerinde bunu nasıl buluyoruz?Ve her adres maxsimum ne kadar kilobitteki değeri alabilir?

i2cwrite ve i2cread komutlarını kullanacağımızı biliyorum.Bunları öğrensem hemen bir devre yapacağım ama daha önce hiç bana bahseden olmadığı için bu soruları soruyorum.Sitedeği çeşitli örnekleri inceledim fakat temel bilgim olmadığı için anlamakta güçlük çekiyorum.Şimdiden teşekkür ederim.

fryrmnd

@alexxcan1905,kardeşim örnek bir kod veryim ben çalıştırdım. çok iyi olmadığımdan sizin dediklerinizi tam anlamadım.ama şimdi adress var word diye tanımlama yapıp "0" değerini atadın diyelim.sonrada 
VERIL=7
VERIH=8

   I2CWRITE SDA,SCL,$A0,ADRESS,[VERIL,VERIH] diye bir ifade ile 2 tane byte tipi değişken yolladın.
okurken adressi "0" olarak verip 
I2CREAD SDA,SCL,$A0,ADRESS,[BL,BH] şeklinde bir ifade ile "78" değerini okursun.

ama adressi "1" olarak verirsen "8" değerini de oıkuyabiliyosun.  biraz garip bayadır bakmıyom eeproma. şimdi kodu açıp bir iki deneme yapınca bu şekilde anladım. kodu da vereyim

DEFINE LCD_DREG      PORTD   
DEFINE LCD_DBIT         4      
DEFINE LCD_EREG      PORTD   
DEFINE LCD_EBIT         3      
DEFINE LCD_RSREG   PORTD   
DEFINE LCD_RSBIT      2            
DEFINE LCD_BITS         4   
DEFINE LCD_LINES      2

TRISD=0
TRISE=0
TRISA=0
TRISB=%10000001

ADCON1=7

VERIL VAR BYTE
VERIH VAR BYTE
BL VAR BYTE
BH VAR BYTE
ADRESS VAR word
SCL VAR PORTC.3
SDA VAR PORTC.4


PAUSE 200
LCDOUT $FE,1
adress=0
VERIL=7
VERIH=8

   I2CWRITE SDA,SCL,$A0,ADRESS,[VERIL,VERIH]
   PAUSE 10
   
BASLA:
LCDOUT $FE,2,"AKTIF"
PAUSE 500
adress=0
  I2CREAD SDA,SCL,$A0,ADRESS,[BL,BH]
  LCDOUT $FE,1
  LCDOUT $FE,2,DEC BL
  PAUSE 1000
  GOTO BASLA   


alexxcan1905

Arkadaşım yazın için sağol.Datasheeti doğrumu okudum bilmiyorum. 24c512 için ;

65536 Tane Word var diyor yani adres var diyor Bu adreslerin her biri 8 bitliktir diyor toplam 524288 bit var diyor.Orjinal ingilizce metnini buraya koyacağım.Eğer doğruysa yazılımlarda şöyle tanımlamak gerekiyor sanırım;
Adres var Word
Veri var byte
Al var byte

The AT24C512 provides 524,288 bits of serial electrically erasable and programmable read only memory (EEPROM) organized as 65,536 words of 8 bits each.

The device's cascadable feature allows up to four devices to share a common two-wire bus. The
device is optimized for use in many industrial and commercial applications where low-power and low-voltage operation are essential. The devices are available in space-saving 8-pin PDIP, 8-lead EIAJ SOIC, 8-lead JEDEC SOIC, 8-lead TSSOP, 8-lead
Leadless Array (LAP), and 8-lead SAP packages. In addition, the entire family is avail-able in 2.7V (2.7V to 5.5V) and 1.8V (1.8V to 3.6V) versions.

ete

Bu eprom 524.288 bitlik bir epromdur. Bunu 8'e bölerseniz 65536 adet 8 bitlik hafıza eder. Yani her bir 1 byte (8 bit) olan toplam 65536 adet hafıza var demektir.
Bu hafızaların adreslenmesi için WORD tipi değişken kullanılmalı ve adresler sıfırdan başlayıp 65535'e kadar verilmelidir.
I2C formatında her elemanın bir cihaz numarası vardır. Bu entegreninki  %10100A1A0R/W olarak verilmiştir.
Aynı Data ve CLK hattına birden fazla (4 adete kadar) hafıza bağlanabilir. Bunların seçimi A0 ve A1 bacakları ile olur.
Şayet tek hafıza kullanıyorsanız A0 ve A1 pinlerini GND ye bağlamak yeterlidir. Böylece cihaz adresinde bu pinlere karşılık gelen bitleri 00 olarak kullanabilirsiniz.
Her bir hafıza 8 bitlik veri alır. Word tipinde bir bilgiyi hafızaya yazmak için 2 hafıza hücresi kullanmak gerekir.
Ete

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

alexxcan1905

Teşekkür ederim.Peki ben bir kod yazdım diyelim bunu nasıl 24c512 ye aklaracağız?Şöyle birşey düşündüm pic' bağlı olacağından ilk önce oradan 24c512 ye yazdırayım sonra Pici sileyip,programımı picin içine koyayım böylece epromdaki bilgi sabit olmuş olur sadece okuma yapacağım çünkü.Yada başka türlü yapılıyor mu bilemem.Mesela ben kod yazdım ama onu birisinin alıp çözmesini istemiyorum bu mümkün mü?

fryrmnd

@alexxcan1905
valla eeproma programı atıp geri ordan taktığın pice yükeyip eepromdaki program kodlarını çalıştırmak istiyosan zor bir iş gibi gözüküyor.bana imkansız gibi geliyor hatta

ete

Bu kadar teferruatlı ve zor bir işi başarabilirsen sana bravo demek lazım.
Ama pice yazdığın programı başkaları görmesin yada çözmesin diyorsan Code Protec açarsın olur biter. Kimse ne okuyabilir nede kopyalayabilir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

alexxcan1905

Ete hocam o zaman nasıl ben24c512 ye birşeyler yazacağım yani habgi programla yazıp neyle yükleyeceğim?

Dediklerimi yanlış anladınız galiba.İlk önce pice şunu yazacağım başka hiç birşey olmayacak

i2cwrite sda,scl,Control kod,Adress,[Veri]

Veri=15
Adres=20 olsun.Şimdi ben bunu yaptığımda tabiki pinler felan tanımlı adres felan word olark tanımlı eepromun 20.adresine 15 verisini yamış oluyorum.Sonra pici devreden çıkarttım.Ne oldu?EEpromda bilgi sabit kalbadımı halen daha 20.adreste 15 verisi var.Sonra esas programımı pice yükleyeceğim ve okuma komutuyla 20.adresteği veriyi okuyacağım bu mümkün mü?

dombilik

Evet aynen öyle.
EEPROM'a verinizi kaydettiğinizde,devrenizin beslemesini kesip verseniz dahi veriniz kaybolmaz.
Programınızın herhangi bir yerindeki okuma rutini ile tekrar verinize ulaşırsınız.
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40

ete

Açıklama az olunca insan anlamakta zorlanıyor yada anlam başka yerlere kayıyor.
Dediklerin tabiiki mümkün ama işin pratikliğini anlayamadım doğrusu.
Bir nevi tak çıkarmı yapacaksın. İşin o kısmını bilemeyince bir anlam çıkartamıyorum.
Her neyse istediğin tarif ettiğin gibi olabilir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

alexxcan1905