Hola que tal, gracias por tu aporte BlackCat!, y tengo una super duda que yo se que podras respondermela

. Estoy tratando de comunicar dos pic24fj128ga010 con i2c (Ya vi que no viene nada en el Errata de este pic

) pero no logro hacerlo :S . Ya pude programar una memoria eeprom 24fc1025, todo funciona muy bien, pero no puedo configurar el pic para que sea maestro :s, segun he leido, se utiliza una interrupcion "SI2CInterrupt" pero no he logrado que el pic entre a la interrupcion, espero y me puedas ayudar, te dejo el codigo fuente del esclavo, en este codigo, lo unico que quiero es que entre a la interrupcion cuando le llegue un dato por el bus de i2c gracias.
#include<p24fj128ga010.h>
#define USE_AND_OR //USED FOR THE OpenI2C1 INSTRUCTION
#include<i2c.h>
#define FCY 2000000UL //THIS IS FOR THE USE OF THE DELAY LIBRARY "libpic30.h"
#include<libpic30.h>
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768);
_CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & POSCMOD_XT ); //CONFIGURATION BYTES
unsigned char config1,config2,b1=8;
void main()
{
TRISD=0;
PORTD=0;
/* Turn off I2C modules */
ConfigIntI2C1(MI2C_INT_ON & SI2C_INT_ON & SI2C_INT_PRI_0 );
CloseI2C1(); //Disbale I2C1 mdolue if enabled previously
config2 =(37); //CONFIGURE OF THE I2C1BRG REGISTER: 100KHZ
config1 =(I2C_ON | I2C_7BIT_ADD| I2C_SLW_DIS|I2C_RCV_EN|I2C_GCALL_EN|I2C_IPMI_DIS|I2C_ACK ); //CONFIGURE OF THE I2C1CON REGISTER: I2C1 ENABLE, I2CADD IS 7 BIT ADDRESS
OpenI2C1(I2C1CON | config1,config2); //CONFIGURATION OF THE MICROCONTROLLER AS MASTER AND WITH VELOCITY OF 100KHZ (SLEW RATE DISABLED)
I2C1ADD=0x04; //ASIGNACION DE DIRECCION DE DISPOSITIVO
while(1)
{
}
}
void __attribute__((__interrupt__, __shadow__)) _SI2CInterrupt(void)
{
IFS1bits.SI2C1IF = 0; //Reset Timer1 interrupt flag and Return from ISR
PORTD=1;
}