用完INTA周期输出又要求隔几个小时触发唤醒MCU,只好使用Alarm_D闹钟唤醒,为了避免INTA中期输出和Alarm_D输出冲突,关闭INTA周期输出,现对Alarm_D初始化做一个记录。方便以后查看。
//产生时分报警INTA 输出
static void SetAlarm_D(SYSCLOCKALARMVALUEINFO stClockAlarmSetValue)
{
u8 nRegInfo , nCount = 0 ;
//地址写入是0X0E,实际在函数内部的地址为0XE0
while(!(Rx8025_ReadProc(0x0E, 1, &nRegInfo)) && nCount ++ < 50);
//设置时间
nCount = 0;
//地址写入是0X0B,实际在函数内部的地址为0XB0
while(!(Rx8025_WirteProc(0x0B, SysDecToBCDProc((u8)stClockAlarmSetValue.nMinute))) && nCount ++ < 50);
nCount = 0;
while(!(Rx8025_WirteProc(0x0C, SysDecToBCDProc((u8)stClockAlarmSetValue.nHour))) && nCount ++ < 50);
//设置DAFG位 不需要设置
//Rx8025_ReadProc(0x0F, 1, &nRegInfo);
//nRegInfo |=0X02;
//Rx8025_ReadProc(0x0F, 1, &nRegInfo);
//开启Alarm_D
nCount = 0;
nRegInfo |=0x40;
while(!(Rx8025_WirteProc(0x0E, nRegInfo)) && nCount ++ < 50);
}
为了可靠设置参数,做了一下重复判断。按照说明书要求(1)先关闭Alarm_D(初始化RX8025时已关闭)(2)设置小时和分钟(3)打开Alarm_D(置位DALE)。
中文版说明书翻译不是很准确。建议对比英文版。
PS:Alarm_D唤醒后不要忘记清楚DAFG位,清除后下一次才能继续唤醒,这一点和INTA电平周期唤醒一样,都是要清除相应的位。。。