I am using PIC32MX795f512L and integrating time-based features using MCP79410 RTC. Due to some application purpose, I am using an external RTC (MCP79410).
I just want to use two alarm interrupts, but I can access only one alarm interrupt. If I enabled ALM0 and ALM1, only the last alarm which I used is working. Another alarm interrupt is not working.
Code I have tried:
void RTCInit(void){
I2CConfigure(I2C2, I2C_ENABLE_SLAVE_CLOCK_STRETCHING);
I2CSetFrequency(I2C2,SYSTEM_CLK,RTC_CLK);
I2CSetSlaveAddress(I2C2,RTC_WRITE_ADDR,0,I2C_USE_7BIT_ADDRESS);
I2CEnable(I2C2,TRUE);
}
void ConfigI2C(void){
PORTSetPinsDigitalIn(IOPORT_E, BIT_9);
INTCONSET = 0x00000002;
INTSetVectorPriority(INT_EXTERNAL_2_VECTOR, INT_PRIORITY_LEVEL_3);
INTSetVectorSubPriority(INT_EXTERNAL_2_VECTOR, INT_SUB_PRIORITY_LEVEL_1);
INTEnable(INT_INT2, INT_ENABLED);
}
Alarm I tried:
void SetALMTime(void)
{
int temp;
WriteAddress[0] = RTC_WRITE_ADDR;
DelayMs(2);
WriteOnI2C(ADDR_ALM0MIN,0x01); //min to be alarmed ALM0
DelayMs(2);
WriteOnI2C(ADDR_ALM0CTL,0x10); // alarm0 compare min
DelayMs(2);
WriteOnI2C(ADDR_ALM1MIN,0x00); //min to be alarmed ALM1
DelayMs(2);
WriteOnI2C(ADDR_ALM1CTL,0x10); // alarm1 compare min
DelayMs(2);
WriteOnI2C(ADDR_CTRL,0x30);
DelayMs(2);
}