/* * File: my_i2c_v4.h * Author: vm * * Created on May 16, 2013, 3:47 AM */ #define I2C_SCL TRISCbits.TRISC1 #define I2C_SDA TRISCbits.TRISC0 /* SSPCON1 REGISTER */ #define SSPENB 0b00100000 /* Enable serial port and configures SCK, SDO, SDI*/ #define SLAVE_7 0b00000110 /* I2C Slave mode, 7-bit address*/ #define SLAVE_10 0b00000111 /* I2C Slave mode, 10-bit address*/ #define MASTER 0b00001000 /* I2C Master mode */ #define MASTER_FIRMW 0b00001011 //I2C Firmware Controlled Master mode (slave Idle) #define SLAVE_7_STSP_INT 0b00001110 //I2C Slave mode, 7-bit address with Start and Stop bit interrupts enabled #define SLAVE_10_STSP_INT 0b00001111 //I2C Slave mode, 10-bit address with Start and Stop bit interrupts enabled /* SSPSTAT REGISTER */ #define SLEW_OFF 0b10000000 /* Slew rate disabled for 100kHz mode */ #define SLEW_ON 0b00000000 /* Slew rate enabled for 400kHz mode */ #define getcI2C ReadI2C #define putcI2C WriteI2C /** P R I V A T E P R O T O T Y P E S ***************************************/ void IdleI2C(void); void OpenI2C( unsigned char sync_mode, unsigned char slew ); signed char getsI2C( unsigned char *rdptr, unsigned char length ); unsigned char ReadI2C( void ); signed char putsI2C( unsigned char *wrptr ); void NotAckI2C( void ); void CloseI2C( void ); signed char WriteI2C( unsigned char data_out ); void StartI2C( void ); void RestartI2C( void ); void StopI2C( void );