一种看门狗电路的制作方法
未命名
07-19
阅读:101
评论:0
1.本技术涉及电力电子技术领域,特别是涉及一种看门狗电路。
背景技术:
2.在单片机运行中,可能会遇到电磁场等恶劣环境干扰失控,造成程序进入死循环,程序跑飞(死机)等意外故障,程序的正常运行被打断,系统无法继续运行,陷入停滞状态,发生不可预料的后果。此时可通过按下复位按钮,强制系统复位。但更理想的实现是通过一套监控系统,实时监视mcu运行状态,在运行异常时,使系统摆脱故障状态。看门狗(watchdog)技术能够解决这一问题。
3.看门狗定时器(watch dog timer, wdt)是mcu的一个组成部分,是一个计数器,其基本原理是先给计数器设定一个数值(溢出值),程序开始运行后,看门狗定时器开始计数,程序正常运行时,会周期发出指令将计数器置零(喂狗),重新开始计数,而如果长时间没有清零,计数器增加到设定值(定时器溢出),计数器会认为程序出现了异常,强制系统复位。
4.目前mcu中的看门狗模块只要有指令将计数器置零(喂狗)就不会触发系统复位,这样假如程序受到干扰从一个地方错误地跳到一段含有喂狗指令的程序段运行就不会检测到这样的错误,也不会触发看门狗复位, 但是这样程序逻辑就错误了,在某些情况下比如医疗系统里面继续运行可能会导致严重的后果。
技术实现要素:
5.基于此,有必要针对上述技术问题,提供一种看门狗电路。
6.一种看门狗电路,所述看门狗电路包括:分频模块,用于根据预设分频值对系统时钟信号进行分频,输出分频后的时钟信号至向上计数器。
7.向上计数器,用于对分频时钟信号进行计数。
8.看门狗复位门限寄存器,用于存储看门狗的复位计数阈值。
9.看门狗状态寄存器,用于记录每一轮不同喂狗id是否在本轮中喂过狗;喂狗id是根据预设id设置规则进行设定的。
10.看门狗控制寄存器,用于存储控制看门狗模块的设置值。
11.喂狗操作寄存器,用于存储当前喂狗操作的喂狗种类标志位、喂狗id以及喂狗操作的时间间隔。
12.在喂狗操作时喂狗程序将喂狗种类标志位、喂狗id和喂狗操作时间间隔写入所述喂狗操作寄存器,根据所述喂狗操作寄存器的值设置所述看门狗状态寄存器相应id状态位的值,并更新所述看门狗控制寄存器;根据所述看门狗状态寄存器和所述看门狗控制寄存器的值、所述复位计数阈值以及所述向上计数器的计数值,判断程序执行是否异常,如果异常则触发看门狗系统复位信号。
13.在其中一个实施例中,所述分频模块包括预分频计数器和预分频寄存器;
所述预分频寄存器,用于存储预设分频值。
14.所述预分频计数器,用于对所述系统时钟信号进行减一计数,当计数到零时将预分频寄存器的值导入预分频计数器,并且同时反转输出给向上计数器的时钟信号电平。
15.在其中一个实施例中,所述看门狗状态寄存器是32位寄存器,用于存储每个喂狗id在本次喂狗周期内是否有过喂狗操作,值为0的位表示与该位对应的喂狗id没有执行过喂狗操作,值为1的位表示与该位对应的喂狗id至少已经执行过一次喂狗操作。
16.在其中一个实施例中,所述看门狗控制寄存器是32位寄存器,寄存器的0至4位存储最近的预定顺序的喂狗id,寄存器的5至9位存储最近的任意顺序的喂狗id,寄存器的10至14位存储最大喂狗id,寄存器的15至31位保留。
17.在其中一个实施例中,在喂狗操作时喂狗程序将喂狗种类标志位、喂狗id和喂狗操作时间间隔写入所述喂狗操作寄存器,根据所述喂狗操作寄存器的值设置所述看门狗状态寄存器相应id状态位的值,并更新所述看门狗控制寄存器,包括:在喂狗操作时喂狗程序段将喂狗种类标志位、喂狗id以及喂狗操作时间间隔写入所述喂狗操作寄存器。
18.如果所述看门狗状态寄存器与所述喂狗操作寄存器中喂狗id对应的位为0,则将所述看门狗状态寄存器的相应位置为1,否则该位的值不变。
19.如果所述喂狗操作寄存器中喂狗种类标志位为任意顺序喂狗操作,则将所述喂狗操作寄存器中喂狗id存储在所述看门狗控制寄存器的5至9位;如果所述喂狗操作寄存器中喂狗种类标志位为预定顺序喂狗操作,则将所述喂狗操作寄存器中喂狗id存储在所述看门狗控制寄存器的0至4位。
20.如果所述喂狗操作寄存器中喂狗id大于喂狗控制寄存器中存储的最大喂狗id号,则将所述喂狗控制寄存器中存储的最大喂狗id号设置为所述喂狗操作寄存器中喂狗id。
21.在其中一个实施例中,根据所述看门狗状态寄存器和所述看门狗控制寄存器的值、所述复位计数阈值以及所述向上计数器的计数值,判断程序执行是否异常,如果异常则触发看门狗系统复位信号,包括:如果所述看门狗状态寄存器中与所述喂狗操作寄存器中喂狗id对应的状态位为1,并且id号小于所述喂狗操作寄存器中喂狗id的位有未置位的,则触发看门狗系统复位信号。
22.如果所述喂狗操作寄存器中喂狗id是预定顺序的喂狗操作,当所述看门狗控制寄存器存储的预定顺序的喂狗id不是比所述喂狗操作寄存器中喂狗id小1的喂狗id,则触发看门狗系统复位信号。
23.如果所述喂狗操作寄存器中喂狗id是第一次喂狗操作,当所述向上计数器累计时间和所述喂狗操作寄存器中存储的喂狗时间间隔的误差大于预设值时,则触发看门狗系统复位信号。
24.在其中一个实施例中,所述预设id设置规则为:喂狗id从0开始逐个加一变大到设定的最大的id,喂狗id根据喂狗间隔时间从小到大排列,当间隔时间一样时按照程序执行时的顺序排列。
25.上述一种看门狗电路,所述看门狗电路包括:分频模块、向上计数器、看门狗复位门限寄存器、看门狗状态寄存器、看门狗控制寄存器以及看门狗操作寄存器,看门狗验证程
序是否跑飞除了常规的喂狗总时间超时判断外,增加了喂狗种类标志位,喂狗的id以及标准间隔时间。本看门狗电路检测到更多种类的程序执行异常,因为喂狗操作时还需要检测每个喂狗的间隔时间和喂狗的顺序逻辑,当程序没有跑飞到出不来的情况,只是跑飞到错误的地方执行了程序时,也有很大可能通过看门狗复位的顺序检测到异常从而触发系统复位,更全面地保障了系统的逻辑正确,避免错误的程序逻辑造成的危害。
附图说明
26.图1为一个实施例中看门狗电路结构框图;图2为另一个实施例中看门狗状态寄存器;图3为另一个实施例中看门狗控制寄存器;图4为另一个实施例中喂狗操作寄存器。
具体实施方式
27.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
28.在一个实施例中,如图1所示,提供了一种看门狗电路,看门狗电路包括:分频模块10、向上计数器20、看门狗复位门限寄存器30、看门狗状态寄存器40、看门狗控制寄存器50以及喂狗操作寄存器60。
29.分频模块10,用于根据预设分频值对系统时钟信号进行分频,输出分频后的时钟信号至向上计数器。
30.具体的,分频模块10是将系统时钟信号分频到需要的频率,这个根据需要的复位间隔时间来定,复位的阈值寄存器最大值是一定的,当需要较长的复位间隔时间时就通过设置分频寄存器来降低看门狗计数时钟频率,那么同样的复位阈值就对应着更长的复位间隔时间。
31.向上计数器20,用于对分频时钟信号进行计数。
32.看门狗复位门限寄存器30,用于存储看门狗的复位计数阈值。
33.看门狗状态寄存器40,用于记录每一轮不同喂狗id是否在本轮中喂过狗;喂狗id是根据预设id设置规则进行设定的。
34.看门狗控制寄存器50,用于存储控制看门狗模块的设置值。具体的,看门狗控制寄存器存储的是看门狗电路的一些功能设置值,包括了最大的喂狗id号, 最近的任意顺序id,最近的预定顺序的id号。
35.喂狗操作寄存器,用于存储当前喂狗操作的喂狗种类标志位、喂狗id以及喂狗操作的时间间隔。具体的,喂狗操作分为两类:一种是任意顺序的喂狗操作;另一种是预定顺序的喂狗操作,当前喂狗id必须在预定顺序种类的喂狗id号比其小1或者在任意顺序种类的喂狗操作后面。
36.预定顺序的喂狗操作的意思是当前喂狗操作的id号必须要在id号比它小一的喂狗id后面,否则就认为逻辑错误,将触发系统复位, 比如说现在执行的是一个id为3的喂狗操作,如果它是任意顺序的,那就不会判断它前面的问狗id是多少,但如果它是预定顺序的
喂狗操作,就要判断是否实在id为2的喂狗操作后面,如果不是,判断为非法,立即发出系统复位请求。
37.将时钟信号采用分频模块设置的分频值进行分频;启动向上计数器对分频的时钟信号进行计数;在喂狗操作时喂狗程序将喂狗种类标志位、喂狗id以及喂狗操作时间间隔写入喂狗操作寄存器,根据喂狗操作寄存器的值设置看门狗状态寄存器相应id状态位的值,并更新看门狗控制寄存器,喂狗程序自动根据看门狗状态寄存器的值、看门狗控制寄存器的值、复位计数阈值以及向上计数器的计数值,判断程序执行是否异常,如果异常则触发看门狗系统复位信号,如果没有异常则根据写入喂狗操作寄存器的值更新看门狗状态寄存器相应id状态位的值和看门狗控制寄存器的值。
38.具体的,看门狗验证程序是否跑飞除了常规的喂狗总时间超时判断外,增加了喂狗种类标志位,喂狗的id以及标准间隔时间(写入喂狗操作寄存器)。
39.喂狗操作时需要提供喂狗id和间隔时间,写入喂狗操作寄存器时(喂狗操作),如果此时看门狗状态寄存器相应的id状态位为0,表示此轮看门狗周期内此id第一次喂狗操作,就将相应的状态位置1,另外每次喂狗操作将在看门狗控制寄存器里记录最近一次的任意顺序喂狗id号和预定顺序喂狗id号。在喂狗操作时如果发生以下的情况将触发看门狗的复位:喂狗时相应的状态位已经是1且喂狗id小于当前喂狗id对应的位有未置位的,或者当前是id讲究顺序的喂狗操作,但是之前的讲究操作顺序的喂狗id不是比当前id小1的id, 或者此时当此id的喂狗操作第一次操作时看门狗计时器累计的时间和喂狗设定的间隔时间误差大于设定的范围,这三种情况表示程序执行异常,会触发看门狗复位。
40.上述一种看门狗电路中,所述看门狗电路包括:分频模块、向上计数器、看门狗复位门限寄存器、看门狗状态寄存器、看门狗控制寄存器以及看门狗操作寄存器,看门狗验证程序是否跑飞除了常规的喂狗总时间超时判断外,增加了喂狗种类标志位,喂狗的id以及标准间隔时间。本看门狗电路检测到更多情况的程序执行异常,因为喂狗操作时还需要检测每个喂狗的间隔时间和喂狗的顺序逻辑,当程序没有跑飞到出不来的情况,只是跑飞到错误的地方执行了程序时,也有很大可能通过看门狗复位的顺序检测到异常从而触发系统复位,更全面地保障了系统的逻辑正确,避免错误的程序逻辑造成的危害。
41.在其中一个实施例中,分频模块包括预分频计数器和预分频寄存器;预分频寄存器,用于存储预设分频值;预分频计数器,用于对系统时钟信号进行减一计数,当计数到零时将预分频寄存器的值导入预分频计数器,并且同时反转输出给向上计数器的时钟信号电平。
42.在其中一个实施例中,如图2所示,看门狗状态寄存器是32位寄存器,用于存储每个喂狗id在本次喂狗周期内是否有过喂狗操作,值为0的位表示与该位对应的喂狗id没有执行过喂狗操作,值为1的位表示与该位对应的喂狗id至少已经执行过一次喂狗操作。
43.在其中一个实施例中,如图3所示,看门狗控制寄存器是32位寄存器,寄存器的0至4位存储最近的预定顺序的喂狗id,寄存器的5至9位存储最近的任意顺序的喂狗id,寄存器的10至14位存储最大喂狗id,寄存器的15至31位保留。
44.在其中一个实施例中,在喂狗操作时喂狗程序段将喂狗种类标志位、喂狗id以及时间间隔写入喂狗操作寄存器,并根据喂狗操作寄存器的值设置看门狗状态寄存器相应id状态位的值,并更新看门狗控制寄存器的值,包括:在喂狗操作时喂狗程序段将喂狗种类标
志位、喂狗id以及喂狗操作时间间隔写入喂狗操作寄存器;如果看门狗状态寄存器与喂狗操作寄存器中喂狗id对应的位为0,则将看门狗状态寄存器的相应位置为1,否则该位的值不变;如果喂狗操作寄存器中喂狗种类标志位为任意顺序喂狗操作,则将喂狗操作寄存器的id存储在看门狗控制寄存器的5至9位;如果喂狗操作寄存器中喂狗种类标志位为预定顺序喂狗操作,则将喂狗操作寄存器的id存储在看门狗控制寄存器的0至4位;如果喂狗操作寄存器中喂狗id大于喂狗控制寄存器中存储的最大喂狗id号,则将喂狗控制寄存器中存储的最大喂狗id号更新为喂狗操作寄存器中喂狗id。
45.喂狗操作寄存器的结构如图4所示。
46.在其中一个实施例中,根据看门狗状态寄存器的值、看门狗控制寄存器的值、复位计数阈值以及向上计数器的计数值,判断程序执行是否异常,如果异常则触发看门狗系统复位信号,包括:如果看门狗状态寄存器中与喂狗操作寄存器中喂狗id对应的状态位为1,并且id号小于喂狗操作寄存器中喂狗id的位有未置位的,则触发看门狗系统复位信号;如果喂狗操作寄存器中喂狗id是预定顺序的喂狗操作,当看门狗控制寄存器存储的预定顺序的喂狗id不是比喂狗操作寄存器中喂狗id小1的喂狗id,则触发看门狗系统复位信号;如果喂狗操作寄存器中喂狗id是第一次喂狗操作,当向上计数器累计时间和喂狗操作寄存器中存储的喂狗时间间隔的误差大于预设值时,则触发看门狗系统复位信号。
47.具体的,喂狗操作时判断需要验证喂狗id的顺序和逻辑,需要满足两个逻辑:一是某个喂狗id喂狗时如果不是第一次喂狗那么需要id小于它的顺序喂狗都已经有过至少一次喂狗操作,二是如果当前是预定顺序的id的喂狗操作,那么之前喂狗id必须是比当前id小1的预定顺序的id或者是任意顺序的id喂狗操作。
48.喂狗操作需要检验此喂狗id首次喂狗的时间间隔满足设定要求。
49.这个两个逻辑检验将更可靠地确保程序实在没有跑飞的情况下运行的。
50.在其中一个实施例中,预设id设置规则为:喂狗id从0开始逐个加一变大到设定的最大的id,喂狗id根据喂狗间隔时间从小到大排列,当间隔时间一样时按照程序执行时的顺序排列。
51.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
52.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:
1.一种看门狗电路,其特征在于,所述看门狗电路包括:分频模块,用于根据预设分频值对系统时钟信号进行分频,输出分频后的时钟信号至向上计数器;向上计数器,用于对分频后的时钟信号进行计数;看门狗复位门限寄存器,用于存储看门狗的复位计数阈值;看门狗状态寄存器,用于记录每一轮不同喂狗id是否在本轮中喂过狗;喂狗id是根据预设id设置规则进行设定的;看门狗控制寄存器,用于存储控制看门狗模块的设置值;喂狗操作寄存器,用于存储当前喂狗操作的喂狗种类标志位、喂狗id以及喂狗操作的时间间隔;在喂狗操作时喂狗程序将喂狗种类标志位、喂狗id和喂狗操作时间间隔写入所述喂狗操作寄存器,根据所述喂狗操作寄存器的值设置所述看门狗状态寄存器相应id状态位的值,并更新所述看门狗控制寄存器;根据所述看门狗状态寄存器和所述看门狗控制寄存器的值、所述复位计数阈值以及所述向上计数器的计数值,判断程序执行是否异常,如果异常则触发看门狗系统复位信号。2.根据权利要求1所述的看门狗电路,其特征在于,所述分频模块包括预分频计数器和预分频寄存器;所述预分频寄存器,用于存储预设分频值;所述预分频计数器,用于对所述系统时钟信号进行减一计数,当计数到零时将预分频寄存器的值导入预分频计数器,并且同时反转输出给向上计数器的时钟信号电平。3.根据权利要求1所述的看门狗电路,其特征在于,所述看门狗状态寄存器是32位寄存器,用于存储每个喂狗id在本次喂狗周期内是否有过喂狗操作,值为0的位表示与该位对应的喂狗id没有执行过喂狗操作,值为1的位表示与该位对应的喂狗id至少已经执行过一次喂狗操作。4.根据权利要求1所述的看门狗电路,其特征在于,所述看门狗控制寄存器是32位寄存器,寄存器的0至4位存储最近的预定顺序的喂狗id,寄存器的5至9位存储最近的任意顺序的喂狗id,寄存器的10至14位存储最大喂狗id,寄存器的15至31位保留。5.根据权利要求3所述的看门狗电路,其特征在于,在喂狗操作时喂狗程序将喂狗种类标志位、喂狗id和喂狗操作时间间隔写入所述喂狗操作寄存器,根据所述喂狗操作寄存器的值设置所述看门狗状态寄存器相应id状态位的值,并更新所述看门狗控制寄存器,包括:在喂狗操作时喂狗程序段将喂狗种类标志位、喂狗id以及喂狗操作时间间隔写入所述喂狗操作寄存器;如果所述看门狗状态寄存器与所述喂狗操作寄存器中喂狗id对应的位为0,则将所述看门狗状态寄存器的相应位置为1,否则该位的值不变;如果所述喂狗操作寄存器中喂狗种类标志位为任意顺序喂狗操作,则将所述喂狗操作寄存器中喂狗id存储在所述看门狗控制寄存器的5至9位;如果所述喂狗操作寄存器中喂狗种类标志位为预定顺序喂狗操作,则将所述喂狗操作寄存器中喂狗id存储在所述看门狗控制寄存器的0至4位;如果所述喂狗操作寄存器中喂狗id大于喂狗控制寄存器中存储的最大喂狗id号,则将
所述喂狗控制寄存器中存储的最大喂狗id号更新为所述喂狗操作寄存器中喂狗id。6.根据权利要求1所述的看门狗电路,其特征在于,根据所述看门狗状态寄存器和所述看门狗控制寄存器的值、所述复位计数阈值以及所述向上计数器的计数值,判断程序执行是否异常,如果异常则触发看门狗系统复位信号,包括:如果所述看门狗状态寄存器中与所述喂狗操作寄存器中喂狗id对应的状态位为1,并且id号小于所述喂狗操作寄存器中喂狗id的位有未置位的,则触发看门狗系统复位信号;如果所述喂狗操作寄存器中喂狗id是预定顺序的喂狗操作,当所述看门狗控制寄存器存储的预定顺序的喂狗id不是比所述喂狗操作寄存器中喂狗id小1的喂狗id,则触发看门狗系统复位信号;如果所述喂狗操作寄存器中喂狗id是第一次喂狗操作,当所述向上计数器累计时间和所述喂狗操作寄存器中存储的喂狗时间间隔的误差大于预设值时,则触发看门狗系统复位信号。7.根据权利要求1所述的看门狗电路,其特征在于,所述预设id设置规则为:喂狗id从0开始逐个加一变大到设定的最大的id,喂狗id根据喂狗间隔时间从小到大排列,当间隔时间一样时按照程序执行时的顺序排列。
技术总结
本申请涉及电力电子技术领域的一种看门狗电路,所述看门狗电路包括:分频模块、向上计数器、看门狗复位门限寄存器、看门狗状态寄存器、看门狗控制寄存器以及看门狗操作寄存器,看门狗验证程序是否跑飞除了常规的喂狗总时间超时判断外,增加了喂狗种类标志位,喂狗的ID以及标准间隔时间。本看门狗电路检测到更多情况的程序执行异常,因为喂狗操作时还需要检测每个喂狗的间隔时间和喂狗的顺序逻辑,当程序没有跑飞到出不来的情况,只是跑飞到错误的地方执行了程序时,也有很大可能通过看门狗复位的顺序检测到异常从而触发系统复位,更全面地保障了系统的逻辑正确,避免错误的程序逻辑造成的危害。造成的危害。造成的危害。
技术研发人员:丁双喜 方云龙 曹华 杨文昊
受保护的技术使用者:苏州至盛半导体科技有限公司
技术研发日:2023.06.13
技术公布日:2023/7/17
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:卧铺疲劳试验台的制作方法 下一篇:一种线缆制造用中拉装置的制作方法
