打印

WDT问题

[复制链接]
5021|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
diy619|  楼主 | 2009-5-22 10:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好!想请教大家一个问题!我

现在写了一个PIC16F877控制步进电机的程序,用了三个

中断,TMR1中断,TMR2中断,还有一个就是RB4的电平

变化中断,TMR1中断是控制数码管显示的,就是数码管

一秒显示一次,是从180显示到0的,TMR2中断是控制电

机运行的,就是电机每4ms运行一步,RB4是限位用的,

就是电机一碰到RB4就反方向运行,现在的问题就是程序

有点混乱,点击MPLAB的Debugger的运行按钮时,系统说


Simulator status indicates that the SIM stopped because the Watch 

Dog Timer(WDT) expired.
If your program stopped unexpectedly,you may have your WDT 

enabled.
我不知道要怎么设置这个WDT,也不知道CLRFWDT这条

指令应该放在什么地方,所以想请大家帮忙解答一下,非常

感谢了!
沙发
xieyuanbin| | 2009-5-22 12:35 | 只看该作者

汇编的配置字

在程序开头的时候加入:
__CONFIG _HS_OSC  & _WDT_ON & _PWRTE_ON & _BODEN_ON & _CP_ALL
         定义振荡    WDT开    上电复位开  电压低复位开  代码保护

可以在编译程序的时候生成配置字的内容

清WDT原则上可以在程序中任何地方,但要保证WDT的复位周期之内至少清一次,一般如果不对WDT做设置,预分频器分配给TMR0的话,WDT的典型复位周期是10MS,但在整个工作温度范围内会上下误差20%,所以你必须在8mS之内清.
另外一般不把 CLRWDT 指令放在定时中断中,因为如果常规程序跑飞,还是一样会跑到定时中断里面清WDT.

使用特权

评论回复
板凳
pll19860907| | 2009-9-11 13:48 | 只看该作者
调试的时候需要把WDT禁止!

使用特权

评论回复
地板
libinxtdj| | 2009-9-18 07:08 | 只看该作者
4楼是对的。。调试的时候需要关掉WDT,这在用户手册里面讲了

使用特权

评论回复
5
ahappycow| | 2009-9-18 12:31 | 只看该作者
调试的 时候把 WDTEN使能位清零,
烧程序时,就使能WDTEN,并设定WDTPS合适的值x,把CLRFWDT放在主循环中,x 要根据这个主循环所需执行最长的时间来定。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝