Estoy intentando hacer una libreria para una 24LC16 en HiTech, pero no consigo hacerla funcionar bien. Estoy usando las funciones del ejemplo que viene en el compilador, y lo que hago basicamente es lo mismo que en la libreria de la 2416 del CCS.
Os dejo el codigo, espero ayuda.
#include <htc.h>
#include "i2c.c"
//---------------------------------------------
void init_ext_eeprom() {
SCL_DIR = 1;//Pone pin como entrada.
SDA_DIR = 1;
}
//--------------------------------------------
unsigned char ext_eeprom_ready() {
unsigned char ack;
i2c_Restart(); // If the write command is acknowledged,
ack = i2c_SendAddress(0x50,0);// then the device is ready.
i2c_Stop();
return !ack;
}
//--------------------------------------------
void write_ext_eeprom(unsigned char address, unsigned char data) {
while(!ext_eeprom_ready());
i2c_Restart();
i2c_SendAddress(0x50,0);
i2c_SendByte(address);
i2c_SendByte(data);
i2c_Stop();
}
//---------------------------------------------
int read_ext_eeprom(unsigned char address) {
int data;
while(!ext_eeprom_ready());
i2c_Restart();
i2c_SendAddress(0x50,0);//Escribir
i2c_SendByte(address);
i2c_Restart();
i2c_SendAddress(0x50,1);//Leer.
data=i2c_ReadByte();
i2c_Stop();
return(data);
}