Estoy interconectando DS1307 RTC
con PIC32MX795F512L
. Estoy usando I2C1
para DS1307 RTC
y luego uso UART2
para enviar el valor RTC al terminal. He escrito el código pero no sé por qué no obtengo datos.
En mi código estoy usando
OpenI2C2 to open the i2c channel.
StartI2C2() to start the communication
StopI2C2() to stop the communication
MasterWriteI2C() to write the data
MasterReadI2C() to read the data
Estos se incluyen en el archivo plib.h
CÓDIGO actualizado:
OpenI2C2(I2C_EN, 163); // I2C channel Configuration
StartI2C2();
IdleI2C2();
n = MasterWriteI2C2(0xD0); //device address
IdleI2C2();
MasterWriteI2C2(0x07);
IdleI2C2();
MasterWriteI2C2(0x00);
IdleI2C2();
StopI2C2();
StartI2C2();
IdleI2C2();
MasterWriteI2C2(0xD0);
IdleI2C2();
MasterWriteI2C2(0x01);
IdleI2C2();
MasterWriteI2C2(0b00010011);
IdleI2C2();
StopI2C2();
StartI2C2();
IdleI2C2();
MasterWriteI2C2(0xD0);
IdleI2C2();
MasterWriteI2C2(0x01);
IdleI2C2();
StopI2C2();
StartI2C2();
IdleI2C2();
MasterWriteI2C2(0xD1);
IdleI2C2();
**res = MasterReadI2C2();**
IdleI2C2();
NotAckI2C2();
IdleI2C2();
StopI2C2();
Estoy utilizando 163 ((33000000/2/100000)-2)
como valor BRG para la comunicación I2C. Estoy depurando el código y puedo ver que todos los valores en los registros I2C son correctos, pero en res = MasterReadI2C2()
, no aparece nada en el registro I2C2RCV
, que contiene el valor recibido e incluso nada aparece en la variable res
. También utilicé una variable n
para verificar si los valores realmente están transmitiendo o no. Así que recibí 0x00
como el valor de n y de acuerdo con el documento, 0 significa transmisión exitosa.
No sé dónde me estoy perdiendo el punto.