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.