24c32 yazma problemi

Başlatan PARSIC, 18 Ocak 2011, 03:47:03

PARSIC

iyi günler..
24c32 veya daha üstü bir eeproma nasıl 16 bitlik adres komutu verebilirim yardımcı olur musunuz...
********************************************************************HI-TECH*******************************************************************

sigmoid

Elimde sadece hazır olarak 24C256 için kod var. Diğer eepromların kodlarını CCSC derleyicisinin driver klasöründeki kodlara bakarak uygulayabilirsin. Bu arada da datasheetlerden faydalanman gerekecek.

24c256.h
//#define epromadres 0

void eeprom_yaz(int adres,char veri);
char eeprom_oku(int adres);


24c256.c
#include <pic.h>
#include "i2c.h"
#include "24c256.h"

char adresh,adresl;

void eeprom_yaz(int adres,char veri)
{ 
  adresh=(char)(adres>>8);
  adresl=(char)adres;
  
  i2c_baslat();
  #ifdef epromadres
    i2c_yaz(0xA0 | (epromadres <<1));
  #else
    i2c_yaz(0xA0);
  #endif
  i2c_yaz(adresh);
  i2c_yaz(adresl);
  i2c_yaz(veri);
  i2c_durdur();
}

char eeprom_oku(int adres)
{
  char temp;
  adresh=(char)(adres>>8);
  adresl=(char)adres;
  
  i2c_baslat();
  #ifdef epromadres
    i2c_yaz(0xA0 | (epromadres <<1));
  #else
    i2c_yaz(0xA0);
  #endif
  i2c_yaz(adresh);
  i2c_yaz(adresl);
  i2c_yenidenbaslat();
  #ifdef epromadres
    i2c_yaz(0xA1 | (epromadres <<1));
  #else
    i2c_yaz(0xA1);
  #endif
  temp=i2c_oku(noack);
  i2c_durdur();	
  return temp;
}


kolay gelsin.

PARSIC

çok teşekkür ederim...
********************************************************************HI-TECH*******************************************************************