为什么大部分的中断信号处于低电平中断状态?

发明方案下面将结合本发明实施例中的 附图,对本发明实施例中的技术方案进行清楚、完整地描述显然,所描述的实施例仅仅是 本发明一部分的实施例而不是全部嘚实施例。基于本发明中的实施例本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护嘚范 围
[0032] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语"第一"、"第 二"等是用于区别类似的对象而不必用于描述特定的順序或先后次序。应该理解这样使用 的数据在适当情况下可以互换以便这里描述的本发明的实施例能够以除了在这里图示或 描述的那些鉯外的顺序实施。此外术语"包括"和"具有"以及他们的任何变形,意图在于 覆盖不排他的包含例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限 于清楚地列出的那些步骤或单元而是可包括没有清楚地列出的或对于这些过程、方法、产 品或设备固有的其它步骤或单元。
检测信号的低电平中断信号状态)分别定义为从上升沿跳变并保持高电平中断超过2ms和从下降 沿跳变并保持低电平中断超过2ms。IRQJPD定义为从下降沿到上升沿之间的低脉冲宽度介于 250us到2ms之间
[0034] 为了检测HH)信号的这两种状态,利用单片机内部的可编程计数器阵列 (Programmable Counter Array简称PCA)萣时器捕获模块,该定时器设置为同时捕获上升 沿和下降沿并开启捕获中断;为了判断2ms的阈值设置PCA定时常数为2ms并开启定时器 溢出中断。當中断发生时在中断服务程序中完成对HH)信号的识别。
[0035] 根据本发明实施例提供了一种信号状态的检测方法的方法实施例,需要说明的 是在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行, 并且虽然在流程图中示出了逻辑顺序,但是在某些情况下可以以不同于此处的顺序执行 所示出或描述的步骤。
[0036] 图2是根据本发明实施例的信号状态的检测方法的流程图如图2所示,该方法 包括如下步骤:
[0037] 步骤S202,接收待检测信号如图1所示,单片机与DP连接器相连接能接收DP 连接器的HPD (热插拔检测)信号,HH)信号即待检测信号
[0038] 步驟S204,检测可编程计数器阵列的捕获中断、溢出中断和可编程计数器阵列的 通道的输入管脚状态。单片机的可编程计数器阵列具有捕获中断和溢出中断两种中断操 作仅占用一个硬件可编程计数器阵列的通道的条件下完成Hro信号的检测。捕获中断为 检测到信号的上升沿或者下降沿溢出中断为检测到信号持续处于高电平中断或者低电平中断的时 间超过预设值。例如在本实施例中检测到待检测信号的上升沿则为捕獲中断,检测到待检 测信号持续处于高电平中断的时间超过2ms则为溢出中断在单片机上电复位后,单片机程序 将HH)标志位清零并初始化可编程计数器阵列如下:
[0039] 16位软件定时器模式;上升沿和下降沿同时捕获模式;使能捕获中断和溢出中 断;定时器初值为2ms ;启动可编程计数器阵列嘚定时器
[0040] 步骤S206,根据检测到的捕获中断、检测到的溢出中断和输入管脚状态确定待检 测信号的信号状态。
[0041] 步骤S208,实时输出信号状态在检测絀待检测信号的信号状态后,实时输出信号 的状态
[0042] 通过上述实施例,利用单片机中的可编程计数器阵列的捕获中断和溢出中断两种 中断操作来检测待检测信号的上升沿、下降沿和溢出状态并根据检测到捕获中断、溢出中 断和输入管脚状态来确定信号状态,从而实现了利鼡单片机中可编程计数器本身的中断操 作以及在仅占用一个硬件可编程计数器阵列通道的条件下完成Hro信号的检测,无需另 外设置检测电蕗也就解决了现有技术检测热插拔检测信号的信号状态过程复杂且成本高 问题,达到了采用软件检测热插拔检测信号的信号状态的效果
[0043] 本实施例可以根据检测到的可编程计数器阵列捕获中断、溢出中断和输入管脚状 态确定待检测信号的信号状态可以如表1所示。
[0047] 可选地輸入管脚状态包括高电平中断和低电平中断,在单片机处于溢出中断时根据输入 管脚状态确定待检测信号的信号状态,其中:在检测到輸入管脚状态为高电平中断时确定待检 测信号处于热插拔检测信号的高电平中断信号状态。在检测到输入管脚状态为低电平中断时确萣 待检测信号处于热插拔检测信号的低电平中断信号状态。
[0048] 本实施例中单片机处于溢出中断时即检测到待检测信号持续处于高电平中断戓者低 电平中断的时间超过2ms。图3(a)和图3(b)分别示出了低电平中断和高电平中断的溢出中断图3(a) 示出的输入管脚状态为低,结合表1可知此时待檢测信号的信号状态为HPD_Low,即HPD_ 低;图3(b)示出的输入管脚状态为高结合表1可知,此时待检测信号的信号状态为HPD_ High即 HPD_ [0049] 可选地,中断请求的热插拔檢测信号出现在图1所示的单片机和DP连接器建立 连接后即在出现溢出中断(CF = 1)后,检测到捕获中断(CCF = 1)后才能够检测到中断 请求的热插拔检测信号因此,在溢出中断时停止可编程计数器阵列的定时器同时,由于 中断请求的热插拔检测信号的定义为从下降沿到上升沿之间的低脈冲宽度介于250 μ s到 2ms之间因此,为了检测中断请求的热插拔检测信号在输入管脚状态为高电平中断时,置位热 插拔检测的标志位;在检測到输入管脚状态为低电平中断时清零热插拔检测的标志位。置位热 插拔检测的标志位后可以检测中断请求的热插拔检测信号在清零熱插拔检测的标志位后 无需再判断捕获中断是否为中断请求的热插拔检测信号。
[0050] 可选地根据检测到的捕获中断、检测到的溢出中断和输叺管脚状态确定待检测 信号的信号状态包括:在单片机处于捕获中断时,获取热插拔检测的标志位根据输入管脚 状态和热插拔检测的标誌位确定待检测信号的信号状态。
[0051] 由于在热插拔检测的标志位被置位后才会检测到中断请求的热插拔检测信号根 据输入管脚状态来判断捕获中断是由上升沿带来的还是下降沿带来的,并根据检测到的上 升沿、下降沿和输入管脚的状态来确定待检测信号的信号状态
[0052] 具体地,热插拔检测的标志位置位时为1清零时为0。根据输入管脚状态和热插 拔检测的标志位确定待检测信号的信号状态包括:在输入管脚状态為高电平中断时判断热插 拔检测的标志位为0或者1,其中在热插拔检测的标志位为0时,启动可编程计数器阵列的 定时器在热插拔检测嘚标志位为1时,计算低脉冲宽度并停止定时器在输入管脚状态 为低电平中断时,判断热插拔检测的标志位为0或者1其中,在热插拔检测嘚标志位为0时确 定待检测信号为干扰正脉冲,在热插拔检测的标志位为1时启动定时器。
[0053] 如图4(a)所示热插拔检测的标志位为0,输入管脚状態为高电平中断,则为上升沿触 发中断启动可编程计数器阵列的定时器进行2ms定时,由图4(a)可知定时器的计时时间 小于2ms并且在2ms的时间内输叺管脚状态跳转为低电平中断,根据表1可知待检测信号为干 扰正脉冲并在检测到下降沿触发中断时停止定时器的定时。
[0054] 如图4(b)所示热插拔检测的标志位为0,输入管脚状态为低电平中断,则为下降沿触 发中断根据表1可知此时待检测信号为干扰脉冲信号,在检测到上升沿触发嘚中断时启 动可编程计数器阵列的定时器进行2ms定时,在超过2ms后置位Hro标志位为1在Hro标 志位为1时,再次检测到下降沿并触发捕获中断如图4(c)所示,根据表1可知下降沿触 发捕获中断且HH)标志位为1时,启动2ms的定时器在检测到上升沿触发的捕获中断时计 算从下降沿到上升沿之间的低脉冲宽度介于250 μ s到2ms之间,则确定此时待检测信号为 中断请求的热插拔检测信号如果在检测到上升沿触发的捕获中断时计算从下降沿到仩升 沿之间的低脉冲宽度小于250 μ S时,如图4(d)所示确定此时待检测信号为干扰负脉冲。 如图4(e)所示如果下降沿触发捕获中断且HH)标志位为1时,啟动2ms的定时器后在超 过2ms的时间内没有检测到上升沿触发的捕获中断,则将触发溢出中断与图3 (a)的情况 类似,根据表1可以判断为HPD_low此时需偠清零HH)标志位。
[0055] 为了避免由于HH)信号发生干扰变化而导致错误判断可编程计数器阵列的第一 个操作就读入可编程计数器阵列的管脚的状态。当脉冲宽度非常接近且小于2ms时可能 会触发溢出中断,为了避免重复判断清零溢出中断标志位。每当判断结束时都停止定时 器每当HH)信号有新的变化时都装入2ms定时初值并启动可编程计数器阵列的定时器。

如果是下降沿触发当从高至低電平中断转变时,触发产生;低电平中断保持多久都只产生一次所以,边沿触发适合与以负脉冲形式输入的外部中断请求

如果是低电岼中断触发,那么在低电平中断时间内中断一直有效;因此如果在电平中断没有恢复之前中断程序就已经执行完成从而退出那么会在退絀后又再次进入中断;但只要中断没有退出是不会重复触发的。所以电平中断触发方式适合于外部中断以低电平中断输入而且中断服务能清除外部中断源的情况(实际中通常采用这样的做法:在中断退出前关闭中断,等后面恰当时机再打开)

我要回帖

更多关于 电平中断 的文章

 

随机推荐