interrupt #else #pragma code #pragma interrupt InterruptHandlerHigh #endif void InterruptHandlerHigh() { // check to see if we have an I2C interrupt if (PIR1bits.SSPIF) { PORTBbits.RB5 = 1; // clear the interrupt flag PIR1bits.SSPIF = 0; // call the handler #ifdef MASTERPIC i2c_master_handler(); #else i2c_slave_handler(); #endif PORTBbits.RB5 = 0; } #ifdef SENSORPIC if (PIR3bits.SSP2IF) { PIR3bits.SSP2IF = 0; i2c2_master_handler(); } #endif SleepIfOkay(); }
void i2c_int_handler() { // check if i2c is in Master mode if ((SSPCON1 & 0x0F) == 0x0E) { i2c_slave_handler(); }// else handle slave mode else { i2c_master_handler(); } }