打印

关于PIC软件复位的方法

[复制链接]
8697|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Abao2011|  楼主 | 2011-11-12 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我编了一个路灯控制系统,一上电到报废都不再掉电,因为有蓄电池一直接着,一旦受干扰就很麻烦了。师兄跟我说要隔一定时间进行程序复位,让程序跟初步上电复位一样从头执行,但是他不懂PIC,我也不知道如何从头,是goto 到开始地址吗?另外,_Configuration要重新执行吗?
沙发
NE5532| | 2011-11-12 13:16 | 只看该作者
把狗打开,原地等复位就可以了。_Configuration 是配置位,不是可执行代码的范围,无需关心。

使用特权

评论回复
板凳
Light_David| | 2011-11-12 20:26 | 只看该作者
用GOTO 或者定時餓狗都可以...

使用特权

评论回复
地板
NE5532| | 2011-11-12 21:56 | 只看该作者
狗要好些,GOTO不能复位寄存器。

使用特权

评论回复
5
wangz2011| | 2011-11-13 08:17 | 只看该作者
用狗,_Configuration不用管。

使用特权

评论回复
6
Ryanhsiung| | 2011-11-13 11:16 | 只看该作者
有专门的复位指令, “Reset()” ,不同编译器定义不一样
  C30  就没有 但是可以自己定义!

使用特权

评论回复
7
yewuyi| | 2011-11-14 10:06 | 只看该作者
有专门的复位指令, “Reset()” ,不同编译器定义不一样
  C30  就没有 但是可以自己定义!
Ryanhsiung 发表于 2011-11-13 11:16


不是每一个PIC产品都有这条指令的。

定时看门狗超时复位即可。

使用特权

评论回复
8
Ryanhsiung| | 2011-11-14 13:45 | 只看该作者
C30 没有定义,可以使用          { __asm__ volatile ("RESET"); }

使用特权

评论回复
9
xaq79| | 2011-11-14 14:28 | 只看该作者
对策:
1 GOTO RESET
2 WDT打开,死等溢出

使用特权

评论回复
10
fanwei326| | 2011-11-15 11:41 | 只看该作者
怕受干扰的话还是用看门狗,需要在__Configuration内打开WDT,定时喂狗。若被干扰了,程序喂不了狗,就会产生WDT超时重启。
另外,若有可能,尽量在不运行时进入睡眠状态,减少受干扰的机会。

使用特权

评论回复
11
lovezichao| | 2013-8-7 15:44 | 只看该作者
yewuyi 发表于 2011-11-14 10:06
不是每一个PIC产品都有这条指令的。

定时看门狗超时复位即可。

是不是只有PIC18XXX系列的才有?

使用特权

评论回复
12
yewuyi| | 2013-8-8 14:00 | 只看该作者
lovezichao 发表于 2013-8-7 15:44
是不是只有PIC18XXX系列的才有?

不一定

使用特权

评论回复
13
xiaomanong| | 2013-8-9 08:11 | 只看该作者
在Configuration中看门狗使能,也只能在超时后复位不能从根本上解决问题。还是想法增强稳定性才是王道。

使用特权

评论回复
14
浅水鲨| | 2019-6-6 09:00 | 只看该作者
Ryanhsiung 发表于 2011-11-14 13:45
C30 没有定义,可以使用          { __asm__ volatile ("RESET"); }

这个指令怎么使用?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

0

粉丝