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:
Damit habe ich erfolgreich auf ein I2C EEprom gespeichert, also funkt es mal, dass ein PIC antwortete, an dem spiele ich mich auch gerade.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); }
Weiteres bastle ich an einer funktion, wo man mehrere Daten lesen/schreiben kann, aber die funktionieren nicht.
hoffe es hat dir geholfen







Zitieren

Lesezeichen