Buenas noches, Estaba intentando iniciar la comunicación con el I2C en mi foto. Por el momento solo establezco los bits en el registro de control en el código y la inicialización de los pines y el PLL, y descubrí que los 4 bits más bajos (RCEN, PEN, RSEN y SEN) no se podían escribir. Como no puedo escribir en el bit SEN, el reloj no se inicia. Además, estoy configurando el registro para que el dispositivo funcione como maestro.
Aquí está mi código:
int main(void)
{
InitOsc();
InitPin();
InitTimer4();
InitTimer5();
MCUinit(); //initialization MLX
//enable I2c
I2C1CONbits.I2CEN=1;
I2C1CONbits.I2CSIDL=0; //continues operation in idle
I2C1CONbits.SCLREL=1; // releases clock
I2C1CONbits.IPMIEN=0; //ipmi should be disabled when operating as master
I2C1CONbits.A10M=0; // slave address are 7-bits
I2C1CONbits.DISSLW=1; //slew rate control bit enabled
I2C1CONbits.SMEN=0; //disables smbus imput threshold (!!)
I2C1CONbits.ACKDT=0;
I2C1CONbits.ACKEN=1;
// Apparently no effect from here on! If I set a breakpoint here and track
// the variables none of these are on even for a single clock cycle!
I2C1CONbits.RCEN=1;
I2C1CONbits.PEN=1;
I2C1CONbits.RSEN=1;
I2C1CONbits.SEN=1;
return 0;
}
¿Hay algo que estoy haciendo mal? Soy un principiante con este microcontrolador, por lo que cualquier explicación sería de utilidad.
Probé el canal SCL con un osciloscopio y nada sale de eso, solo permanece en una señal plana de 0V.
¡Gracias!