WDT问题

[复制链接]
6320|5
 楼主| diy619 发表于 2009-5-22 10:01 | 显示全部楼层 |阅读模式
大家好!想请教大家一个问题!我<br /><br />现在写了一个PIC16F877控制步进电机的程序,用了三个<br /><br />中断,TMR1中断,TMR2中断,还有一个就是RB4的电平<br /><br />变化中断,TMR1中断是控制数码管显示的,就是数码管<br /><br />一秒显示一次,是从180显示到0的,TMR2中断是控制电<br /><br />机运行的,就是电机每4ms运行一步,RB4是限位用的,<br /><br />就是电机一碰到RB4就反方向运行,现在的问题就是程序<br /><br />有点混乱,点击MPLAB的Debugger的运行按钮时,系统说<br /><br />:<br />Simulator&nbsp;status&nbsp;indicates&nbsp;that&nbsp;the&nbsp;SIM&nbsp;stopped&nbsp;because&nbsp;the&nbsp;Watch&nbsp;<br /><br />Dog&nbsp;Timer(WDT)&nbsp;expired.<br />If&nbsp;your&nbsp;program&nbsp;stopped&nbsp;unexpectedly,you&nbsp;may&nbsp;have&nbsp;your&nbsp;WDT&nbsp;<br /><br />enabled.<br />我不知道要怎么设置这个WDT,也不知道CLRFWDT这条<br /><br />指令应该放在什么地方,所以想请大家帮忙解答一下,非常<br /><br />感谢了!
xieyuanbin 发表于 2009-5-22 12:35 | 显示全部楼层

汇编的配置字

在程序开头的时候加入:<br />__CONFIG&nbsp;_HS_OSC&nbsp;&nbsp;&&nbsp;_WDT_ON&nbsp;&&nbsp;_PWRTE_ON&nbsp;&&nbsp;_BODEN_ON&nbsp;&&nbsp;_CP_ALL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定义振荡&nbsp;&nbsp;&nbsp;&nbsp;WDT开&nbsp;&nbsp;&nbsp;&nbsp;上电复位开&nbsp;&nbsp;电压低复位开&nbsp;&nbsp;代码保护<br /><br />可以在编译程序的时候生成配置字的内容<br /><br />清WDT原则上可以在程序中任何地方,但要保证WDT的复位周期之内至少清一次,一般如果不对WDT做设置,预分频器分配给TMR0的话,WDT的典型复位周期是10MS,但在整个工作温度范围内会上下误差20%,所以你必须在8mS之内清.<br />另外一般不把&nbsp;CLRWDT&nbsp;指令放在定时中断中,因为如果常规程序跑飞,还是一样会跑到定时中断里面清WDT.
pll19860907 发表于 2009-9-11 13:48 | 显示全部楼层
调试的时候需要把WDT禁止!
libinxtdj 发表于 2009-9-18 07:08 | 显示全部楼层
4楼是对的。。调试的时候需要关掉WDT,这在用户手册里面讲了
ahappycow 发表于 2009-9-18 12:31 | 显示全部楼层
调试的 时候把 WDTEN使能位清零,
烧程序时,就使能WDTEN,并设定WDTPS合适的值x,把CLRFWDT放在主循环中,x 要根据这个主循环所需执行最长的时间来定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部