MSP430看门狗定时器

[复制链接]
4126|11
 楼主| whywhy89713 发表于 2012-7-27 10:38 | 显示全部楼层 |阅读模式
源程序如下
#include  <msp430x14x.h>
void main(void)
{
  WDTCTL = WDT_ADLY_250;                    // WDT 250ms, ACLK, interval timer
  IE1 |= WDTIE;                             // Enable WDT interrupt
  P1DIR |= 0x01;                            // Set P1.0 to output direction
  _BIS_SR( GIE);                 //interrupt
}
// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
  P1OUT ^= 0x01;                            // Toggle P1.0 using exclusive-OR
}

比较奇怪的事经过试验发现,当令WDTCTL = WDT_ADLY_250; 时LED并不闪烁,而令WDTCTL = WDT_MDLY_32;时却可以闪烁;希望达人们能够具体讲讲这是怎么回事? 非常感谢!
figo20042005 发表于 2012-7-27 10:47 | 显示全部楼层
是不是那中断时间,刚好人的视觉判断不出
colin111111 发表于 2012-7-27 11:41 | 显示全部楼层
时间暂留效应
 楼主| whywhy89713 发表于 2012-7-27 12:01 | 显示全部楼层
3# colin111111
非常感谢楼上两位的回答,可是我觉得不应该是这样吧。
通过查看库函数,和相关寄存器,我的想法是:
WDTCTL = WDT_ADLY_250;用的是ACLK=32768Hz,延时为t(ACLK)*2^13所以其延时是250ms
WDTCTL = WDT_MDLY_32;用的是SMCLK=1MHz,延时为t(SMCLK)*2^15所以其延时是32ms
也就是说ADLY_250延时应该更长一些才对呀,怎么会因为视觉暂停效应而看不见呢?
这是我的想法不知道对不对
 楼主| whywhy89713 发表于 2012-7-27 12:01 | 显示全部楼层
2# figo20042005
非常感谢楼上两位的回答,可是我觉得不应该是这样吧。
通过查看库函数,和相关寄存器,我的想法是:
WDTCTL = WDT_ADLY_250;用的是ACLK=32768Hz,延时为t(ACLK)*2^13所以其延时是250ms
WDTCTL = WDT_MDLY_32;用的是SMCLK=1MHz,延时为t(SMCLK)*2^15所以其延时是32ms
也就是说ADLY_250延时应该更长一些才对呀,怎么会因为视觉暂停效应而看不见呢?
这是我的想法不知道对不对
figo20042005 发表于 2012-7-27 12:53 | 显示全部楼层
那这个就不是了,你仿真看下有没有进入中断,进入中断的时间是不是250MS
colin111111 发表于 2012-7-27 16:37 | 显示全部楼层
你看一下的时钟源的选择对么?
colin111111 发表于 2012-7-27 20:37 | 显示全部楼层
这个现象很奇怪,按道理应该都可以
myai03 发表于 2012-7-28 16:10 | 显示全部楼层
1# whywhy89713
myai03 发表于 2012-7-28 16:10 | 显示全部楼层
:):)不错
Crazy窝窝头 发表于 2012-7-28 20:45 | 显示全部楼层
时钟源的问题吗?
oxlm 发表于 2012-9-18 11:36 | 显示全部楼层
有的430芯片需要外接时钟源看门狗的ACLK才能工作正常的,你可以用示波器量一下看门狗中断的长度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

52

帖子

0

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