[技术问答] 外部中断相关注意事项以及常见问题

[复制链接]
 楼主| mickit 发表于 2023-10-15 13:18 | 显示全部楼层 |阅读模式
赛元单片机提供多个外部中断口 INT0~INT2,当外部中断口有中断条件发生时,外部 中断就发生了。其中 INT0 和 INT1 会产生中断标志为 IE0/IE1,正常情况下用户不需要处 理,硬件会自动清除。外部中断使用时,用户可以根据需要设成上升沿、下降沿或者双沿中 断,可通过设置 SFR(INTxF 和 INTxR)来实现。外部中断 INT0~2 还可以唤醒单片机的 STOP。

本文档主要是包含外部中断在使用过程中的相关注意事项以及常见问题,主要包含以下 几个内容:

1、外部中断注意事项;

2、同时使用同组的多个外部中断口时,应该如何判断外部中断的中断触发源;

3、使用外部中断后出现死机或复位的现象是什么原因;

4、使用外部中断唤醒低功耗时,出现无法唤醒的现象是什么原因;

5、使用触摸按键唤醒低功耗的库时,同时使用外部中断唤醒,触摸按键出现无响应的情况 是什么原因。

以下为具体内容:

1、外部中断注意事项

1) 在使用外部中断功能时,请将对应的 IO 口设置为输入模式;

2) IO 口模式需要先设置,再进行相应的外部中断配置,反过来操作有可能会误产生一 次边沿中断;

3) 同组外部中断共用一个中断向量,如果同时使用了同一组外部中断的多个中断口,用 户需要在中断服务函数内读取 IO 口电平,判断中断的来源,再执行对应的操作;

4) 当用户程序在初始化完外部中断 0/1 后(除 SC92F732X 和 SC92F725X 外),若后 续程序中有操作到 TCON 的 TR1、TR0、TF1、TF0 位的场合,需要在外部中断 0/1 的中断服务函数内手动清除外部中断标志,否则可能会导致外部中断标志位无法硬件 清除;

5) 使用 SC92F732X 和 SC92F725X 时,当用户程序在初始化完外部中断 0/1 后,若后 续程序中有操作到 TCON 的 TR1、TR0、TF1、TF0 位的场合,外部中断 0/1 只能使 用其中一个,同时外部中断服务函数内需要手动清除两个外部中断标志,否则会导致 外部中断标志位无法硬件清除。(若后续程序不需要操作到 TCON 寄存器的则可以同 时使用外部中断 0 和 1,不需要软件清除标志)。

2、同时使用同组的多个外部中断口时,应该如何判断外部中断的中断触发源

同组外部中断共用一个中断向量,如果同时使用了同一组外部中断的多个中断口,用户 可以在中断服务函数内读取 IO 口电平,判断中断的来源,再执行对应的操作。

3、使用外部中断后出现死机或复位的现象是什么原因

检查用户程序在初始化完外部中断 0/1 后,后续程序中是否有操作到 TCON 的 TR1、 TR0、TF1、TF0 位的场合,如果有的话,需要在外部中断服务函数内手动清除外部中 断标志,否则可能会导致外部中断标志无法硬件清除,导致频繁进入外部中断,从而表 现为死机或看门狗溢出复位的现象。

4、使用外部中断唤醒低功耗时,出现无法唤醒的现象是什么原因

使用外部中断无法唤醒低功耗时,可以从以下方面排查:

1) 检查外部中断是否产生,可以在外部中断服务函数里面加入 IO 口的翻转,通过测 试 IO 翻转确认是否有外部中断产生,如果没有外部中断产生就查看外部中断初始 化是否正确,总中断是否打开,外部中断口上是否有触发外部中断的波形;

2) 测试芯片功耗,查看有外部中断产生时芯片功耗是否有上升,看是否为芯片实际已 经从低功耗唤醒,只是没有唤醒的现象,例如:亮灯等;

3) 检查程序中是否唤醒又立马进入了低功耗模式,导致唤醒的时间太短,从而看不到 被唤醒的过程;

4) 检查用户在初始化完外部中断 0/1 后,后续的程序中是否有操作到 TCON 寄存器的 TR1、TR0、TF0、TF1,如果有的话,有可能会出现外部中断标志无法硬件清除, 导致频繁进入外部中断,从而表现为无法唤醒,需要在外部中断服务函数中手动清 除外部中断标志。

5、使用触摸按键唤醒低功耗的库时,同时使用外部中断唤醒,触摸按键出现无响应的情况是什么原因

使用触摸按键唤醒低功耗的库,同时使用外部中断唤醒,当使用外部中断唤醒时,触摸 按键会无响应,建议检查以下两个方面

1) 检查外部中断唤醒后,是否调用了 TouchKey_QuitLowPowerMode 函数;

2) 检查所使用的库文件是否为最新版本。 作者:赛元MCU平台 https://www.bilibili.com/read/cv23031194/ 出处:bilibili

timfordlare 发表于 2023-11-11 14:17 | 显示全部楼层
外部中断引脚应连接到外部触发器(如按键、传感器等),确保连接可靠且避免干扰。
bartonalfred 发表于 2023-11-11 14:22 | 显示全部楼层
单片机外部中断是常用的中断方式之一,具有响应速度快、优先级高等特点
chenci2013 发表于 2023-11-11 14:50 | 显示全部楼层
外部中断引脚连接错误、触发方式设置不当或外部中断处理程序错误等原因。
belindagraham 发表于 2023-11-11 15:40 | 显示全部楼层
在单片机中,需要创建中断向量表,以便将外部中断连接到相应的中断控制器通道上。
dspmana 发表于 2023-11-11 16:33 | 显示全部楼层
使用外部中断唤醒低功耗时,出现无法唤醒的现象,可能是由于外部中断的配置不正确,或者是外部中断的触发条件没有被正确满足导致的。
ulystronglll 发表于 2023-11-11 17:00 | 显示全部楼层
必须手动清除外部中断标志位,否则可能会出现复位。
jtracy3 发表于 2023-11-11 17:28 | 显示全部楼层
如果使用了同组外部中断口,需要在中断服务函数中检查 IO 口电平。
lzmm 发表于 2023-11-12 09:23 | 显示全部楼层
同时使用同组的多外部中断口时,需要正确判断外部中断的中断触发源。
claretttt 发表于 2023-11-12 09:48 | 显示全部楼层
需要在外部中断0/1的中断服务函数内手动清除外部中断标志,否则可能会导致外部中断标志位无法硬件清除。
cashrwood 发表于 2023-11-12 09:59 | 显示全部楼层
在使用外部中断功能时,需要将对应的IO口设置为输入模式。
wangdezhi 发表于 2023-11-12 10:10 | 显示全部楼层
在单片机中,外部中断的硬件连接和初始化非常重要。
youtome 发表于 2023-11-12 10:19 | 显示全部楼层
很多时候会用到定时器中断来计时。
primojones 发表于 2023-11-12 10:43 | 显示全部楼层
使用外部中断后出现死机或复位的现象,可能是由于外部中断的配置不正确,或者是外部中断的触发条件被误触发导致的。
sheflynn 发表于 2023-11-12 10:56 | 显示全部楼层
避免外部中断处理程序执行时间较长、中断优先级设置不当
macpherson 发表于 2023-11-12 11:20 | 显示全部楼层
同组外部中断共用一个中断向量,如果同时使用了同一组外部中断的多个中断口,用户需要在中断服务函数内读取IO口电平,判断中断的来源,再执行对应的操作。
10299823 发表于 2023-11-12 11:30 | 显示全部楼层
在单片机中,每个外部中断源都有一个唯一的中断向量地址。
wwppd 发表于 2023-11-12 11:40 | 显示全部楼层
正确处理外部中断事件,如读取触发器的值、执行特定功能等。
hilahope 发表于 2023-11-12 11:49 | 显示全部楼层
在单片机中,外部中断的处理程序通常被称为中断服务例程(ISR)
louliana 发表于 2023-11-12 11:58 | 显示全部楼层
选择外部中断的触发方式,如下降沿触发、上升沿触发或低电平触发等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

1533

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部