Obtuve PIC24FJ192GB106 (paquete de 64 pines) y no consigo que el módulo I2C funcione en absoluto. ¿Cuál es la forma más fácil y directa de probar si el módulo está bien?
Estoy usando el módulo I2C1, (SCL1 - pin 44, SDA1 - pin 43).
BRG register = 39; // 100 kHz for Fosc = 8 MHz
// Control register
I2C1CONbits.I2CEN = 1;
I2C1CONbits.I2CSIDL = 0;
I2C1CONbits.SCLREL = 1;
I2C1CONbits.IPMIEN = 0;
I2C1CONbits.A10M = 0;
I2C1CONbits.DISSLW = 1;
I2C1CONbits.SMEN = 0;
I2C1CONbits.GCEN = 0;
I2C1CONbits.STREN = 0;
I2C1CONbits.ACKDT = 0;
I2C1CONbits.ACKEN = 0;
I2C1CONbits.RCEN = 0;
I2C1CONbits.PEN = 0;
I2C1CONbits.RSEN = 0;
I2C1CONbits.SEN = 0;
// starting the module
I2C1CONbits.I2CEN = 1;
// setting the START CONDITION
I2C1CONbits.SEN = 1;
No hay respuesta. La condición de inicio no se ejecuta. El periférico I2C se encuentra en los pines no removibles. El registro TrisD completo (pin 43 = D9, pin 44 = D10) se establece como entrada (después del restablecimiento). Los pines tienen pull-ups (3.3 V, 4.7 kOhm). También he intentado establecer el bit correspondiente en ODCD a 1 (pin digital) y 0 (drenaje abierto).
¿Me he perdido algo? El microcontrolador funciona bien (UART, PWM, reloj de referencia, ADC, ...).
Apreciaría cualquier orientación.