您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
单片机如何利用中断进行复位?
单片机,程序,看门狗单片机如何利用中断进行复位?
发布时间:2016-12-08加入收藏来源:互联网点击:
问题补充: 就是按一下中断的按键回到刚通电的状态
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
谢谢邀请:
1.题主你提出的问题好像本身就有问题,首先通过按压一个按键使单片机复位的方法,这个跟中断没有关系,每一个单片机系统都可以设计一个复位电路,这个电路若是手动的就是通过一个按键使电路获得需要的高电平或者低电平来实现硬件复位,复位后单片机程序从0X00地址开始从新执行程序。例如我们常见的的51单片机复位电路如下图:
复位电路工作过程:
复位电路工作原理如右图所示,VCC上电时,使电容C充电,在10K电阻上出现高电位电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下S22,C放电,在10K电阻上出现电压,使得单片机复位。S22松手,C又充电,几个毫秒后,单片机进入工作状态。
题主问到的应该就是这种复位电路的复位方法。
2.单片机看门狗复位:
顾名思义看门狗的意思是放置出错,有看门狗电路的单片机,再进行程序设计时可以初始化看门狗参数,设定在规定的时间或者计数脉冲内实现复位看门狗俗称“喂狗”,程序正常运行时看门狗不会溢出,若程序跑飞满足不了喂狗的条件看门狗会溢出从而输出相应电平促使单片机复位。
上图是一个自带看门口的复位电路,这个在单片机程序中规定时间输出信号给复位电路,电路保持正常,若程序跑飞WDI接收不到信号就会输出信号到nRST给单片机复位脚使单片机复位。
单片机复位电路就是为了防止程序在复杂条件下跑飞造成不可预知的后果。
回答于 2019-09-11 08:43:50
你用中断进行复位是出于什么要求?要达到什么目的?要知道程序一旦复位,不只是程序从头走这么简单,单片机复位后,它的各个功能寄存器的值都有可能恢复为默认值,端口状态也会恢复成默认状态。。。。。。
如果想要实现利用中断复位,我所知道的有两种方式:看门狗中断和无中断服务程序的中断。
一、利用看门狗中断实现复位
单片机中看门狗的作用在这里就不详细说了,看门狗中断的功能之一是,防止单片机程序陷入预料之外的死循环或者单片机程序跑飞。
如何实现看门狗中断复位呢?首先我们要预估一段程序的最长运行时间,估算出来后,再加上一些时间余量,把这个时间作为看门狗的“喂狗”时间,在这个时间即将达到时,要及时“喂狗”(也就是把看门狗时间配置寄存器的值重新设置),这样看门狗会重新计时,程序继续正常运行。一旦程序跑飞或者进入一个预料之外的死循环,那么因为程序一直在这里运行,不会再运行到“喂狗”程序中,所以当看门狗寄存器的值达到预定值后,就产生了中断,这个中断让单片机复位。
二、利用没有中断服务程序的中断复位
这个功能我在MSP430单片机上试验过,没有再别的单片机上实验,所以不确定别的单片机是否也会这样。
具体实现过程是,在程序中使能某个中断,例如端口中断,串口中断等,但是不写这个中断的服务程序,这样,当满足这个中断的条件出现时,由于找不到中断服务程序,单片机就会复位。
回答于 2019-09-11 08:43:50
“利用中断进行复位”的说法有些含混。
复位最常见的是外部电路来做,例如开机电路形成复位信号给复位引脚;还有由其他设备来控制的,怀疑题目说的是这种情况,在中断中控制*别的*MCU而不是自身复位。这种情况下控制MCU就是有一根引线连到被控制MCU的复位脚,通过GPIO来复位。
还有一种就是软复位,是程序主动要求复位的。
但是例如51单片机没有软复位功能的。
最有趣的是看门狗复位。开启了看门狗复位后,必须在规定的时间内触发看门狗,否则就会复位。如果程序跑飞了,这个机制能够重启系统。
回答于 2019-09-11 08:43:50
中断里开启看门狗然后写个空的死循环,看门狗喂不了狗就复位了。没有看门狗的话就外部做个电路,能把rst脚钳位到复位电平一小段时间然后自动解除,用单片机其他脚去触发也可以,模拟上电复位的过程就好了,当然个人觉得不如加个外置看门狗。
回答于 2019-09-11 08:43:50
硬复位:用按键把单片机的复位脚(或电源)短接到地;
软复位:
1. 把按键功能做成IO电平变化中断,进中断入口后,人为让程序跳转到程序初始化,起到复位的效果;单片机是可控条件而复位的。
2. 把按键功能做成IO电平变化中断,进中断入口后,让程序死循环,主程序由于长时间不清看门狗而复位;这跟硬复位差不多了。
上一篇:如何理解后现代主义中所讲的“存在即为合理,一切都是最好的安排”这句话?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |