Como prometí publico las tres funciones que utilicé para comunicarme por I2C con el acelerómetro MMA7455L.
Espero que a alguien le sirva.
Saludos.
//------------------------------
// Inicializacion Acelerometro
//------------------------------
void accel_init(){
IdleI2C();
StartI2C();
IdleI2C();
WriteI2C(0x3A); //0x1D desplazado con un 0
WriteI2C(0x16); //Registro MODE CONTROL
WriteI2C(0x05); //Medición contínua
StopI2C();
IdleI2C();
}
//-----------------------------------
// Escritura 1 registro
//-----------------------------------
void accel_write(int reg, int data){
IdleI2C();
StartI2C();
IdleI2C();
WriteI2C(0x3A); //0x1D desplazado con un 0
WriteI2C(reg); //Registro a escribir
WriteI2C(data); //Dato a escribir en registro
StopI2C();
IdleI2C();
}
//-----------------------------------
// Lectura 1 registro
//-----------------------------------
int accel_read(int reg){
int data;
IdleI2C();
StartI2C();
IdleI2C();
WriteI2C(0x3A); //0x1D desplazado con un 0
WriteI2C(reg); //Registro a leer
IdleI2C();
StartI2C();
IdleI2C();
WriteI2C(0x3B); //0x1D desplazado con un 1
data=ReadI2C(); //Dato leido->data
StopI2C();
IdleI2C();
return(data)
};