00001
00002
00003
00004
00008 #ifndef PICCOLO_I2C_H
00009 #define PICCOLO_I2C_H
00010
00011 #define I2C_ACK 0 //pozitív nyugtázás
00012 #define I2C_NAK 1 //negatív nyugtázás
00013
00014
00015 #define SSPENB 0b00100000
00016 #define SLAVE_7 0b00000110
00017 #define SLAVE_10 0b00000111
00018 #define MASTER 0b00001000
00019 #define MASTER_FIRMW 0b00001011 //I2C Firmware Controlled Master mode (slave Idle)
00020 #define SLAVE_7_STSP_INT 0b00001110 //I2C Slave mode, 7-bit address with Start and Stop bit interrupts enabled
00021 #define SLAVE_10_STSP_INT 0b00001111 //I2C Slave mode, 10-bit address with Start and Stop bit interrupts enabled
00022
00023
00024 #define SLEW_ON 0b00000000
00025 #define SLEW_OFF 0b10000000
00026 #define SMBUS_ENABLE 0b01000000
00027 #define SMBUS_DISABLE 0b00000000
00028
00029 #define i2c_idle() while ((SSPCON2 & 0x1F) | (SSPSTATbits.R_W))
00030
00031 #define i2c_start() SSPCON2bits.SEN=1; while(SSPCON2bits.SEN)
00032
00033 #define i2c_rstart() SSPCON2bits.RSEN=1; while(SSPCON2bits.RSEN)
00034
00035 #define i2c_stop() SSPCON2bits.PEN=1; while(SSPCON2bits.PEN)
00036
00037 #define i2c_ack(ackbit) SSPCON2bits.ACKDT=ackbit; SSPCON2bits.ACKEN=1; while(SSPCON2bits.ACKEN)
00038
00039
00040 void i2c_init(uint16 bitrate_kHz);
00041 uint8 i2c_getc(uint8 ack2send);
00042 uint8 i2c_putc(uint8 data);
00043 void i2c_write1(uint8 addr,uint8 data);
00044 void i2c_write2(uint8 addr,uint8 d1, uint8 d2);
00045 void i2c_writeN(uint8 addr, uint8* data, uint8 cnt);
00046 void i2c_read1(uint8 addr,uint8* p1);
00047 void i2c_read2(uint8 addr,uint8* p1, uint8* p2);
00048 void i2c_readN(uint8 addr,uint8* p1, uint8 cnt);
00049 #endif
00050
00051
00052
00053