31 #ifndef _ESOS_PIC24_I2C_H 32 #define _ESOS_PIC24_I2C_H 62 extern struct stTask __stChildTaskI2C, __stGrandChildTaskI2C;
63 extern uint8_t __esos_i2c_dataBytes[2];
66 #define I2C_WADDR(x) (x & 0xFE) //clear R/W bit of I2C addr 67 #define I2C_RADDR(x) (x | 0x01) //set R/W bit of I2C addr 69 #define ESOS_TASK_WAIT_ON_AVAILABLE_I2C() \ 71 ESOS_TASK_WAIT_WHILE(__esos_IsSystemFlagSet(__ESOS_SYS_I2C_IS_BUSY)); \ 72 __esos_SetSystemFlag(__ESOS_SYS_I2C_IS_BUSY); \ 75 #define ESOS_TASK_SIGNAL_AVAILABLE_I2C() __esos_ClearSystemFlag(__ESOS_SYS_I2C_IS_BUSY) 78 #define __PIC24_I2C1_START() \ 80 I2C1CONbits.SEN = 1; \ 81 ESOS_TASK_WAIT_WHILE( I2C1CONbits.SEN); \ 84 #define __PIC24_I2C1_RSTART() \ 86 I2C1CONbits.RSEN = 1; \ 87 ESOS_TASK_WAIT_WHILE( I2C1CONbits.RSEN); \ 90 #define __PIC24_I2C1_STOP() \ 92 I2C1CONbits.PEN = 1; \ 93 ESOS_TASK_WAIT_WHILE( I2C1CONbits.PEN); \ 96 #define __PIC24_I2C1_PUT(byte) \ 99 ESOS_TASK_WAIT_WHILE( I2C1STATbits.TRSTAT); \ 102 #define ESOS_TASK_WAIT_ON_GETI2C1( pu8_get, u8_ack2Send ) \ 103 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stGrandChildTaskI2C, __esos_pic24_getI2C1, (pu8_get), (u8_ack2Send) ) 115 #define ESOS_TASK_WAIT_ON_WRITE1I2C1( u8_addr, u8_d1 ) \ 117 __esos_i2c_dataBytes[0] = (u8_d1); \ 118 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskI2C, __esos_pic24_writeNI2C1, (u8_addr), &__esos_i2c_dataBytes[0], 1 ); \ 134 #define ESOS_TASK_WAIT_ON_WRITE2I2C1( u8_addr, u8_d1, u8_d2 ) \ 136 __esos_i2c_dataBytes[0] = (u8_d1); \ 137 __esos_i2c_dataBytes[1] = (u8_d2); \ 138 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskI2C, __esos_pic24_writeNI2C1, (u8_addr), &__esos_i2c_dataBytes[0], 2 ); \ 150 #define ESOS_TASK_WAIT_ON_WRITENI2C1( u8_addr, pu8_d, u16_cnt ) \ 151 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskI2C, __esos_pic24_writeNI2C1, (u8_addr), (pu8_d), (u16_cnt) ) 163 #define ESOS_TASK_WAIT_ON_READ1I2C1( u8_addr, u8_d1 ) \ 164 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskI2C, __esos_pic24_readNI2C1, (u8_addr), &(u8_d1), 1 ) 181 #define ESOS_TASK_WAIT_ON_READ2I2C1( u8_addr, u8_d1, u8_d2 ) \ 183 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskI2C, __esos_pic24_readNI2C1, (u8_addr), &__esos_i2c_dataBytes[0], 2 ); \ 184 (u8_d1) = __esos_i2c_dataBytes[0]; \ 185 (u8_d2) = __esos_i2c_dataBytes[1]; \ 199 #define ESOS_TASK_WAIT_ON_READNI2C1( u8_addr, pu8_d, u16_cnt ) \ 200 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskI2C, __esos_pic24_readNI2C1, (u8_addr), (pu8_d), (u16_cnt) ) 214 #endif // end ESOS_PIC24_I2C_H void esos_pic24_configI2C1(uint16_t u16_FkHZ)
This is the master include file for implementing ESOS on Microchip PIC24 MCUs.
ESOS_CHILD_TASK(__esos_pic24_writeNI2C1, uint8_t u8_addr, uint8_t *pu8_d, uint16_t u16_cnt)
unsigned char uint8_t
An abbreviation for an 8-bit unsigned integer.