硬件: EPSON RX8010 SJ


功能描述:

报警中断功能 (Alarm Interrupt Function) 分日期或周两种报警模式,于设定时间(小时和分钟)产生中断事件。

当报警中断事件产生时,AF 标志位会被置 "1", 引脚 IRQ1 电平被置低为 "0" . 当报警中断触发后的 1.46mS (最大时间), AF 标志位和 IRQ1 输出状态会被改变.

IRQ1="L" 会保持,除非给予强制中止指令

** 清除标志寄存器 FLAG Register 的标志位 AF 为 "0", IRQ1 输出则会为返回高电平或 Hi-Z 状态. 


报警中断具体功能

1. 周模式;  <扩展寄存器 Extension Register 标志位 WADA="0">
    1.1 一周中每天指定 hh:mm 时间产生报警中断;
    1.2 一周中某天或某几天, 于 hh:?? 时间产生小时整点报警; (分钟设定被忽略)
    1.3 一周中某天或某几天, 于每个小时的 ??:mm 时间产生报警; (小时设定被忽略)

2. 日期模式;  <扩展寄存器 Extension Register 标志位 WADA="1">
    2.1 每天指定 hh:mm 时间产生报警中断;
    2.2 于某天 hh:?? 时间产生小时整点报警; (分钟设定被忽略)
    2.3 于某天每个小时的 ??:mm 时间产生报警; (小时设定被忽略)


设定报警中断功能流程


功能图

?! IRQ1 中断触发后,AF bit 复位为 "0" 时, 程序中 IRQ1 低电平中断再次触发一次, 须特别注意,目前尚未找到原因; ?? IRQ1 为 Hi-Z 输出信号造成?


涉及相关寄存器


寄存器设置规则




设定举例


功能函数


/** Alarm Interrupt Function -- START -- **/void RX8010SJ_AIF_reset_FLAG_AF(void);
void RX8010SJ_AIF_unable_CTRL_AIE(void);
void RX8010SJ_AIF_enable_CTRL_AIE(void);void RX8010SJ_AIF_set_WEEK_MODE_of_EXT_WADA(void);
void RX8010SJ_AIF_set_DAY_MODE_of_EXT_WADA(void);void RX8010SJ_AIF_unable_ALARM_MIN(void);
void RX8010SJ_AIF_unable_ALARM_HOUR(void);
void RX8010SJ_AIF_unable_ALARM_WEEK_OR_DAY(void);void RX8010SJ_AIF_set_ALARM_MIN(uint8_t minute);
void RX8010SJ_AIF_set_ALARM_HOUR(uint8_t hour);
void RX8010SJ_AIF_set_ALARM_WEEK_OR_DAY(uint8_t para);void RX8010SJ_AIF_trigger_by_per_minute(void);                                                                                    // ALARM trigger by per minute, 条件: all AE = 1, WADA 没关系
void RX8010SJ_AIF_trigger_every_day_set_time(uint8_t hour_para,uint8_t min_para);               // AIF 报警中断功能: 每天某个设定时间(hh:mm)报警
void RX8010SJ_AIF_trigger_WEEK_MODE_hour_on_time(uint8_t week_para,uint8_t hour_para);  // AIF 报警中断功能: 周模式下,某天或某几天的小时准点(hh:??)报警, 分钟被忽略
void RX8010SJ_AIF_trigger_WEEK_MODE_minute_on_time(uint8_t week_para,uint8_t min_para); // AIF 报警中断功能: 周模式下,某天或某几天的分钟(??:mm)报警, 小时被忽略
void RX8010SJ_AIF_trigger_DAY_MODE_hour_on_time(uint8_t day_para,uint8_t hour_para);        // AIF 报警中断功能: 日期模式下,某天的小时准点(hh:??)报警, 分钟被忽略
void RX8010SJ_AIF_trigger_DAY_MODE_minute_on_time(uint8_t day_para,uint8_t min_para);       // AIF 报警中断功能: 日期模式下,某天或某几天的分钟(??:mm)报警, 小时被忽略/** Alarm Interrupt Function,AIF -- END -- **//** Alarm Interrupt Function -- START -- **/void RX8010SJ_AIF_reset_FLAG_AF(void)
{RX8010SJ_reset_bit_FLAG_AF();
}void RX8010SJ_AIF_unable_CTRL_AIE(void)
{RX8010SJ_write_bit_CTRL_AIE( RX8010SJ_BIT_UNABLE );
}void RX8010SJ_AIF_enable_CTRL_AIE(void)
{RX8010SJ_write_bit_CTRL_AIE( RX8010SJ_BIT_ENABLE );
}void RX8010SJ_AIF_set_WEEK_MODE_of_EXT_WADA(void)
{RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_WEEK );        // 0: WEEK, 1: DAY
}void RX8010SJ_AIF_set_DAY_MODE_of_EXT_WADA(void)
{RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_DAY );     // 0: WEEK, 1: DAY
}void RX8010SJ_AIF_unable_ALARM_MIN(void)
{RX8010SJ_write_reg_ALARM_MIN( 0x80 );                      // ALARM_MIN  AE = "1"
}void RX8010SJ_AIF_unable_ALARM_HOUR(void)
{RX8010SJ_write_reg_ALARM_HOUR( 0x80 );                 // ALARM_HOUR  AE = "1"
}void RX8010SJ_AIF_unable_ALARM_WEEK_OR_DAY(void)
{RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( 0x80 );      // ALARM_WEEK_OR_DAY  AE = "1"
}void RX8010SJ_AIF_set_ALARM_MIN(uint8_t minute)
{RX8010SJ_write_reg_ALARM_MIN( minute );
}void RX8010SJ_AIF_set_ALARM_HOUR(uint8_t hour)
{RX8010SJ_write_reg_ALARM_HOUR( hour );
}void RX8010SJ_AIF_set_ALARM_WEEK_OR_DAY(uint8_t para)
{RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( para );
}// ALARM trigger by per minute, 条件: all AE = 1, WADA 没关系
void RX8010SJ_AIF_trigger_by_per_minute(void)
{RX8010SJ_AIF_unable_CTRL_AIE();RX8010SJ_AIF_reset_FLAG_AF();// RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_WEEK );     // 0: WEEK, 1: DAY
//  RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_DAY );      // 0: WEEK, 1: DAYRX8010SJ_write_reg_ALARM_MIN( 0x80 );                     // ALARM_MIN  AE = "1"RX8010SJ_write_reg_ALARM_HOUR( 0x80 );                 // ALARM_HOUR  AE = "1"RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( 0x80 );     // ALARM_WEEK_OR_DAY  AE = "1"RX8010SJ_AIF_enable_CTRL_AIE();
}// AIF 报警中断功能: 每天某个设定时间(hh:mm)报警
void RX8010SJ_AIF_trigger_every_day_set_time(uint8_t hour_para,uint8_t min_para)
{RX8010SJ_AIF_unable_CTRL_AIE();RX8010SJ_AIF_reset_FLAG_AF();/*RX8010SJ_write_bit_EXT_WADA( AIF_MODE_WEEK );        // 0: WEEK, 1: DAYRX8010SJ_write_reg_ALARM_WEEK_OR_DAY( 0x7F );     // 每周每天工作模式设定, 功能等同 RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( 0x80 )
*/RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_DAY );        // 0: WEEK, 1: DAYRX8010SJ_write_reg_ALARM_WEEK_OR_DAY( 0x80 );RX8010SJ_write_reg_ALARM_MIN( min_para );RX8010SJ_write_reg_ALARM_HOUR( hour_para );RX8010SJ_AIF_enable_CTRL_AIE();
}// AIF 报警中断功能: 周模式下,某天或某几天的小时准点(hh:??)报警, 分钟被忽略
void RX8010SJ_AIF_trigger_WEEK_MODE_hour_on_time(uint8_t week_para,uint8_t hour_para)
{RX8010SJ_AIF_unable_CTRL_AIE();RX8010SJ_AIF_reset_FLAG_AF();RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_WEEK );        // 0: WEEK, 1: DAYRX8010SJ_write_reg_ALARM_MIN( 0x80 );                             // ALARM_MIN  AE = "1"RX8010SJ_write_reg_ALARM_HOUR( hour_para );RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( week_para );  // ALARM_WEEK_OR_DAY, AE = "0"RX8010SJ_AIF_enable_CTRL_AIE();
}// AIF 报警中断功能: 周模式下,某天或某几天的分钟(??:mm)报警, 小时被忽略
void RX8010SJ_AIF_trigger_WEEK_MODE_minute_on_time(uint8_t week_para,uint8_t min_para)
{RX8010SJ_AIF_unable_CTRL_AIE();RX8010SJ_AIF_reset_FLAG_AF();RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_WEEK );        // 0: WEEK, 1: DAYRX8010SJ_write_reg_ALARM_MIN( min_para );                             RX8010SJ_write_reg_ALARM_HOUR( 0x80 );                          // ALARM_HOUR  AE = "1"RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( week_para );    // ALARM_WEEK_OR_DAY, AE = "0"RX8010SJ_AIF_enable_CTRL_AIE();
}// AIF 报警中断功能: 日期模式下,某天的小时准点(hh:??)报警, 分钟被忽略
void RX8010SJ_AIF_trigger_DAY_MODE_hour_on_time(uint8_t day_para,uint8_t hour_para)
{RX8010SJ_AIF_unable_CTRL_AIE();RX8010SJ_AIF_reset_FLAG_AF();RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_DAY );     // 0: WEEK, 1: DAYRX8010SJ_write_reg_ALARM_MIN( 0x80 );                             // ALARM_MIN  AE = "1" RX8010SJ_write_reg_ALARM_HOUR( hour_para );RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( day_para );  // ALARM_WEEK_OR_DAY, AE = "0"RX8010SJ_AIF_enable_CTRL_AIE();
}// AIF 报警中断功能: 日期模式下,某天或某几天的分钟(??:mm)报警, 小时被忽略
void RX8010SJ_AIF_trigger_DAY_MODE_minute_on_time(uint8_t day_para,uint8_t min_para)
{RX8010SJ_AIF_unable_CTRL_AIE();RX8010SJ_AIF_reset_FLAG_AF();RX8010SJ_write_bit_EXT_WADA( RX8010SJ_EXT_WADA_AIF_MODE_DAY );                     // 0: WEEK, 1: DAYRX8010SJ_write_reg_ALARM_MIN( min_para );                             RX8010SJ_write_reg_ALARM_HOUR( 0x80 );                                  // ALARM_HOUR  AE = "1"RX8010SJ_write_reg_ALARM_WEEK_OR_DAY( day_para );             // ALARM_WEEK_OR_DAY, AE = "0"RX8010SJ_AIF_enable_CTRL_AIE();
}/** Alarm Interrupt Function,AIF -- END -- **/

EPSON RX8010SJ RTC 调试笔记之四, 报警中断功能 (Alarm Interrupt Function)相关推荐

  1. EPSON RX8010SJ RTC 调试笔记之五, 固定周期定时中断功能 (Fixed-cycle Timer Interrupt Function)

    硬件: EPSON RX8010 SJ 功能描述: 固定周期定时中断功能 (Fixed-cycle Timer Interrupt Function) 产生一个循环周期的中断事件, 在 244.14u ...

  2. EPSON RX8010SJ RTC 调试笔记之六, 计时更新中断功能 (Time Update Interrupt Function)

    硬件: EPSON RX8010 SJ 功能描述: 计时更新中断功能 (Time Update Interrupt Function) 于每秒或每分钟产生一个中断事件.中断信号输出为 IRQ1. 功能 ...

  3. EPSON RX8010SJ RTC 调试笔记 之三,I2C 寄存器表

    硬件: EPSON RX8010 SJ ** RX8010SJ I2C 寄存器表 RX8010SJ I2C 寄存器说明 12.3.6 功能相关的寄存器 2 (Reg-30[h] ~ 32[h])   ...

  4. EPSON RX8010SJ RTC 调试笔记之五, 时钟及日历解析

    硬件: EPSON RX8010 SJ 时钟及日历解板示例 RX8010SJ RTC 时钟芯片,除周寄存器(WEEK Register) 外,其它涉及时间的寄存器,均采用 8421 BCD 来表示. ...

  5. EPSON RX8010SJ RTC 调试笔记之七, 频率停止检测功能(Frequency Stop Detection Function)和频率输出功能 (FOUT Function)

    硬件: EPSON RX8010 SJ 频率停止检测功能(Frequency Stop Detection Function): 计时更新中断功能 (Time Update Interrupt Fun ...

  6. EPSON RX8010SJ RTC 调试笔记 之一,I2C 地址及通讯时序

    硬件: EPSON RX8010 SJ 1. EPSON RX8010 SJ  7-bits I2C 地址: 0x32 <特别注意: RX8010SJ 一次I2C 通讯周期须 < 0.95 ...

  7. APM32F103 RTC内部时钟源报警中断例程测试

    APM32F103 RTC内部时钟源报警中断例程测试 ✨相关篇推荐<[开源电路]STM32F103VCT6开发板>

  8. EPSON RX8010SJ RTC 简要功能说明及性能参数

    硬件: EPSON RX8010 SJ 特别注意: 对于不用的功能和保留的位(reserved bit) 进行寄存器初始化是必要的!~ 12.1 功能描述 1) 时钟功能 该功能用来读取和设置年.月. ...

  9. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...

    之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...

最新文章

  1. [转]几种最短路径算法的比较
  2. vue ...mapMutations 的第一个参数默认为 数据对象state
  3. Hibernate 注解映射
  4. C++ remove、remove_copy、remove_if和remove_copy_if函数使用详解
  5. 004-controller的使用
  6. 视+AR正式发布EasyAR引擎2.0版,并宣布开放AR相机平台
  7. RVC使用指南(三)-对象管理
  8. 程序员的自我修养 - 符号修饰 函数签名 以及一个引申的问题: extern c
  9. android 安装apk 代码,Android 8.0安装apk的实例代码
  10. iperf基本使用方式
  11. 英文期刊论文翻译格式要求和文献要求
  12. Python究竟是一门什么样的编程语言?
  13. java 金字塔 2的幂_三角形数(金字塔三角形数量公式)
  14. win10 启动后无法正常显示桌面/黑屏
  15. RS485、RS232、RS422的 特点 和 区别
  16. 【Data truncation: Data too long for column ‘XXX at row 1 报错】
  17. 足球相关的英文专业术语(持续更新中...Ctrl+F可直接进行搜索)
  18. 使用Python API实现TRT版BN/hswish/Silu等算子
  19. linux怎么杀掉僵尸进程,Linux中如何杀掉僵尸进程
  20. 一种基于肌电信号运动起点、波峰、终点实时自动检测的方法

热门文章

  1. c4droid语言实现窗口,【分享C4droid代码】真正的随机
  2. Dev c++自带小游戏
  3. 天旦BPC 4.3发布,人工智能产品化第一步
  4. vhdl程序流程图的画法_VHDL语言,有流程图,求救写设计报告
  5. jsp页面导入java包能干嘛_在JSP中如果要导入java.util.*包要使用什么指令
  6. 教师资格证证件照要求来了!注意照片不要卡审
  7. laravel结合workerman开发在线聊天应用
  8. Cassandra简介
  9. 抽象方法示例_示例介绍JavaScript窗口方法
  10. 二手服务器网站,二手服务器良心选购指南