Yo soy la interconexión DS1307 RTC
con PIC32MX795F512L
. Estoy usando I2C1
para DS1307 RTC
y, a continuación, utilizando UART2
a enviar el RTC valor a la terminal. He escrito el código, pero no sé por qué no estoy recibiendo datos.
En mi código que estoy utilizando
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 están incluidos en el plib.h archivo.
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();
Yo estoy usando el 163 ((33000000/2/100000)-2)
como BRG valor para la comunicación I2C. Yo soy la depuración del código y puede ver todos los valores en I2C registros son correctos, pero en res = MasterReadI2C2()
, nada se muestra en I2C2RCV
registro que contiene el valor recibido y aún nada, demostrando en la res
variable. También he utilizado una variable n
para comprobar si los valores son en realidad la transmisión o no. Recibí 0x00
como el valor de n y de acuerdo con el documento, 0 significa que la transmisión exitosa.
No sé dónde me estoy perdiendo el punto.