Hola compañeros ,hace bastante tiempo deje de programar los pics por temas laborales ,ahora mas distendido he arrancado nuevamente¡¡¡
Estoy agregando un rtcc a un pic 18f97j60, me he basado en el ejemplo de aplicacion AN1364 , pero no puedo leer los registros ,estoy debugeando con un Pikit3.
estas son mis funciones:
Al leer el dato en la direccion 0x02(Minutes) , este no la guarda en rtcc_buf = SSP1BUF .
quizas me estoy pasando por alto algo, agrdeceria una observacion, saludos¡¡¡
void WriteRTCCTime(void)
{
IdleI2C(); //Ensure that I2C Module is Idle
StartI2C(); //Generate I2C Start Condition
WriteI2C(0xde); //Control byte for RTCC
IdleI2C();
WriteI2C(0x01); //Address for Minutes
IdleI2C();
WriteI2C(0x45); //45 Minutes
IdleI2C();
WriteI2C(0x71); //11 Hours 12 Hour Format
IdleI2C();
//WriteI2C(0x02); //Tuesday
WriteI2C(0x0A); //Tuesday + VBATEN set
IdleI2C();
WriteI2C(0x14); //14th of the Month
IdleI2C();
WriteI2C(0x08); //August
IdleI2C();
WriteI2C(0x12); //2012
IdleI2C();
StopI2C(); //Generate Stop Condition
//Now write the seconds and Start the Oscillator
StartI2C(); //Generate I2C Start Condition
WriteI2C(0xde); //Control byte for RTCC
IdleI2C();
WriteI2C(0x00); //Address for Seconds Register
IdleI2C();
WriteI2C(0xA3); //Loads Seconds + ST=1
IdleI2C();
StopI2C(); //Send Stop Bit
}
void ReadRTCCTime(void)
{
IdleI2C(); //Ensure that I2C Module is Idle
StartI2C(); //Generate I2C Start Condition
WriteI2C(0xDE); //escribe ,Control byte for RTCC escritura =0xde
IdleI2C();
WriteI2C(0x02); // direccion ,Address for Minutes
RestartI2C();
WriteI2C(0xDF) ; //3- send the DEVICE ADDRESS for RTCC READS. =0xdf
SSP1CON2bits.RCEN = 1 ; // enable I2C receive mode(RCEN=0 after 8cks by hw)
Delay10KTCYx(100);
rtcc_buf = SSP1BUF ; // store read result in the related buffer
StopI2C(); //Send Stop Bit
}