F

PCF8598C-2 1024 ´ 8-bit CMOS EEPROM with I2C-bus interface YARDIM???

Başlatan faruk_zone, 05 Şubat 2012, 16:27:40

faruk_zone

PCF8598C-2
1024 ´ 8-bit CMOS EEPROM with I2C-bus interface

bu eeproma 16f877a dan 720 farklı adrese 8 bitlik veri kaydetmek istiyorum bu eepromu kullanabilirmiyim?

ete

Sorunun cevabı epromun adında yazıyor zaten.
1024 adet 8 bitlik eprom. Bu 1024 adet byte adrese sahip eprom demek oluyor.
Sana yeter de artar bile.
Diğer konu başlığı altında sorduğun soruları da hesaba katarsak bu epromda 1024 adet ayrı byte adresi olduğunu söyleyebiliriz. Dolayısıyla 0  adresinden başlayıp 719 da son adresi kullanırsın.
Yada 1 den başlayıp 720 de son adresi kullanıp bilgilerini yazarsın.
Ete


faruk_zone

HOCAM peki 877a nın program hafızası yetermi 720 bytelık veriyi işlemeye.tüm veriler değişken olacağı için sıkıntı çıkarırmı?

ete

720 byte lık verinin tamamını 877 nin değişken hafızasına (değişkenlere) yüklemeye kalkarsan elbette sorun çıkar. Ama bildiğim kadarı ile bu veriler teker teker işlenir. Ne yapılacaksa tabiiki. Çünki veri nedir nasıl işlenmesi düşünülüyor bir açıklama vermemişsin.

Ete

faruk_zone

hocam değişkenler sayı olacak 720 ayrı sayı kısaca böyle olacak ve bu sayılara menüden değer verilecek ayrı ayrı keypad den giricem.

faruk_zone

bir sorum daha olacak hocam;

POW11 VAR WORD[16]

WRITE 0,POW11[0]
WRITE 1,POW11[0]

WRITE 2,POW11[1]
WRITE 3,POW11[1]
BUNUN gibi tek word'u adet kullanabilirmiyiz? okuma işleminde
READ 0,POW11[0]
READ 1,POW11[0]

READ 2,POW11[1]
READ 3,POW11[1]

BÖYLE bişey yapmak istiyorum ama hata veriyor hocam nasıl yapıcam?

ete

Eproma dizi degiskeni olarak yazma yada okuma komutu verme. Onun yerine bir temp degiskenine oku sonra onu diziye esitle. Yazarkende once dizi degiskenini temp degiskenine aktar onu eproma yaz.
Dahili eproma 16 bit yazamazsin. Ayni sekilde tem degiskenine aktar ve sonra write x,temp.byte1 , temp.byte0:pause 10.  Seklinde yaz.
Ete

faruk_zone

POW01      VAR   WORD[16] '0.TİP POW ALT
POW01TEMP   VAR POW01[16]

-----------------------BU şekilde tanımladım
POW01TEMP=56632
write 0,POW01TEMP[0].BYTE1
write 1,POW01TEMP[0].BYTE0
PAUSE 10
-------------------------------------
read 0,POW01TEMP[0].BYTE1
read 1,POW01TEMP[0].BYTE0

LCDOUT $FE,1,#POW01TEMP


BÖYLEMİ OLACAK HOCAM;?

ete

Çok yanlış. Ben TEMP değişkeni derken dizi değişkenlerinden kurtulmak için ara bir değişken yani dizi değişkeni olmayan bir değişkeni kullanmanı önermiştim.

Bu durumda kullanma şeklin şöyle olmalı;

POW01  VAR   WORD[16] '0.TİP POW ALT
TEMP      VAR   WORD

-----------------------BU şekilde tanımladım
TEMP=POW01(x)   'önce dizi değişkenini TEMP değişkenine aktardık.
write 0, TEMP.BYTE1   'sonra bunu eproma yazdırdık.
write 1, TEMP.BYTE0
PAUSE 10
-------------------------------------
Read 0,TEMP.BYTE1        'epromdan okurken temp değişkenine okuduk
Read 1,TEMP.BYTE0
POW01(x)=TEMP           'sonra bunu olması gereken dizi değişkenine aktardık.
LCDOUT $FE,1,#POW01(x)
Değişkenlerde görülen x index değişkenidir. 0-15 arasında bir değer alabilir.

Ete

faruk_zone

hah tamamdır hocam oldu süper.bu yöntem program hafızasını azaltır değilmi yoksa 16 tane word tanımlayıp yapmakla aynı ram i harcamaz galiba?

ete

Program hafızası ile değişkenlerin alakası yoktur. Değişkenlerin ayrı hafızası vardır. İstersen 3 satırlık bir program yaz ama değişken kısmına;
SAYI VAR WORD [1500] yaz bak bakalım ne oluyor.
Değişken hafızası ise tanımladığın değişken adedi ile sınırlıdır. Buda tamamen kullandığın işlemcinin kapasitesine bağlıdır.
Bir 16F serisi entegre ile 18F serisi bir birinden çok farklı değişken sayısı kabul eder. Bu nedenle tanımladığın değişken adetlerini sayarak değişken hafızasından ne kadar harcadığını hesaplayabilirsin.

Program hafızası ise programın boyutu ile doğru orantılı olarak tüketilir. Derleme sonucunda derleyicinin verdiği xxxx word used gibi bir açıklama ne kadar hafıza kullandığının bilgisidir.

Ete

Powered by EzPortal