Volevo scrivere ieri sera, ma non riuscivo più ad aprire la pagina del forum.
Comunque sono ancora bloccato...vedo sempre 255 a display.
Ho guardato i segnali con l'oscilloscopio e si vedono correttamente.
Io sto usando il dspic30f6014a.
Pubblico sotto il codice,
-FUNZIONE DI SCRITTURA
Code:
void WriteByte(unsigned char AddressIC, unsigned int AddressRegister, unsigned char DataByte)
{
unsigned char addressH,addressL;
addressH = (unsigned char) ((AddressRegister & 0xFF00) >> 8);
addressL = (unsigned char) (AddressRegister & 0x00FF);
Open_I2C();
//IdleI2C();
StartI2C();
IdleI2C();
//scrivo l'indirizzo della eeprom
MasterWriteI2C(AddressIC);
MasterWriteI2C(addressH);
MasterWriteI2C(addressL);
MasterWriteI2C(DataByte);
StopI2C();
IdleI2C();
CloseI2C();
return;
}
-FUNZIONE DI LETTURA
Code:
unsigned char ReadByte(unsigned char AddressIC, unsigned int AddressRegister)
{
unsigned char addressH,addressL;
unsigned char var=0;
addressH = (unsigned char) ((AddressRegister & 0xFF00) >> 8);
addressL = (unsigned char) (AddressRegister & 0x00FF);
Open_I2C();
//IdleI2C();
StartI2C();
IdleI2C();
//scrivo l'indirizzo della eeprom
MasterWriteI2C(AddressIC);
MasterWriteI2C(addressH);
MasterWriteI2C(addressL);
StartI2C();
IdleI2C();
MasterWriteI2C(AddressIC+1);
var = MasterReadI2C();
NotAckI2C();
StopI2C();
IdleI2C();
CloseI2C();
return var;
}
Avevo provato ad inserire "IdleI2C();" dopo ogni comando "MasterWriteI2C" ma non cambia niente.