Hiho,
also hier is mal eine seite, wo es um PIC und I2C geht:
http://www.fernando-heitor.de/picfor...&highlight=i2c
Weiteres benütze ich folgenden Code:
Code:
void init_i2c()
{
output_float(I2C_SCL);
output_float(I2C_SDA);
}
//Schreiben von einem Byte über I2C
void write_i2c(Byte address, BYTE data, int c_nr)
{
short int status;
i2c_start(); //Belegen des Buses
i2c_write(0xfe & c_nr); //schreiben der Deviceadresse
i2c_write(address); //Datenadresse
i2c_write(data); //1 Byte Daten
i2c_stop(); //Busfreigabe
//Warten bis die Daten verarbeitet und Gerät wieder bereit
i2c_start();
status=i2c_write(c_nr);
//Statusabfrage, 0-Gerät reagiert, 1-Gerät reagiert nicht
while(status==1) //Warten bis es reagiert
{
i2c_start();
status=i2c_write(0xa0 | c_nr);
}
i2c_stop();
}
BYTE read_i2c(Byte address, int c_nr) //Lesen eines Bytes
{
BYTE data;
i2c_start(); //Belegen des Buses
i2c_write(0xfe & c_nr); //schreiben der Deviceadresse
i2c_write(address); //Datenadresse
i2c_start(); //Restarten des Buses
i2c_write(0xa1 | c_nr); //1 steht für Lesezugriff
data=i2c_read(0); //1 Byte lesen
i2c_stop(); //Freigeben des Buses
return(data);
}
Damit habe ich erfolgreich auf ein I2C EEprom gespeichert, also funkt es mal, dass ein PIC antwortete, an dem spiele ich mich auch gerade.
Weiteres bastle ich an einer funktion, wo man mehrere Daten lesen/schreiben kann, aber die funktionieren nicht.
hoffe es hat dir geholfen
Lesezeichen