58 OpenI2C(MASTER, SLEW_ON);
60 SSPADD = (((crystal_frequency_MHz *1000)/4)/baud_rate_KHz)-1;
69 signed char write_I2C_EEPROM(
unsigned char control,
unsigned int address,
unsigned char data ){
71 unsigned char addressH;
72 unsigned char addressL;
74 addressH = (
unsigned char) ((address & 0xFF00) >> 8);
75 addressL = (
unsigned char) (address & 0x00FF);
88 while (SSPCON2bits.SEN);
97 if (WriteI2C(control)){
110 if (!SSPCON2bits.ACKSTAT){
113 if (WriteI2C(addressH)){
130 if (!SSPCON2bits.ACKSTAT) {
133 if (WriteI2C(addressL)) {
150 if (!SSPCON2bits.ACKSTAT){
153 if (WriteI2C(data)) {
170 if (!SSPCON2bits.ACKSTAT) {
176 while (SSPCON2bits.PEN);
204 unsigned char dataReadback;
219 if (dataReadback == data)
230 signed char read_I2C_EEPROM(
unsigned char control,
unsigned int address,
unsigned char *data) {
232 unsigned char addressH;
233 unsigned char addressL;
235 addressH = (
unsigned char) ((address & 0xFF00) >> 8);
236 addressL = (
unsigned char) (address & 0x00FF);
250 while (SSPCON2bits.SEN);
253 if (PIR2bits.BCLIF) {
259 if (WriteI2C(control)){
272 if (!SSPCON2bits.ACKSTAT) {
275 if (WriteI2C(addressH)){
291 if (!SSPCON2bits.ACKSTAT) {
293 if (WriteI2C(addressL)) {
310 if (!SSPCON2bits.ACKSTAT){
315 while (SSPCON2bits.RSEN);
318 if (PIR2bits.BCLIF) {
324 if (WriteI2C(control+1)) {
337 if (!SSPCON2bits.ACKSTAT){
340 SSPCON2bits.RCEN = 1;
343 while (SSPCON2bits.RCEN);
349 while (SSPCON2bits.ACKEN );
355 while (SSPCON2bits.PEN);
358 if (PIR2bits.BCLIF) {