WDTCTL 看门狗控制寄存器
WDTCTL 由两部分组成:
高 8 位是对 WDT 操作的控制命令。要写入操作 WDT 的控制命令,出于安全原因必须先正确写入高字节
看门狗口令。口令位 5AH,如果口令写错将导致系统复位。
读 WDTCTL 时,不需要口令,可直接读取地址 120H 中的内容,读出数据低字节位 WDTCTL 的值,高字
节始终位 69H。WDTCTL 除了看门狗定时器的控制位之外,还有两个用于设置 NMI 引脚功能。
WDTISx:选择看门狗定时器的计时输出
其中 T 是 WDTCNT 的输入时钟源周期。
0 T×2的15次方
1 T×2的13次方
2 T×2的9次方
3 T×2的6次方
WDTSSEL:选择 WDTCNT 的时钟源
0 SMCLK
1 ACLK
由 WDTISx 及 WDTSSEL 位便可确定 WDT 定时时间,因此通过软件对计数器设置不同的初始值就可实现
不同时间的定时。与其他定时器不同之处在于,WDT 最多只能定时 8 种和时钟源相关的时间。
下表列出了 WDT 可选的定时时间(晶振为 32.768KHz,SMCLK=1MHz)。
WDTCNTCL:看门狗计数器清零位
0: 无操作
1: 将 WDTCTL 的值清零
当该位为 1 时,清除 WDTCNT。
WDTTMSEL:工作模式选择
0 看门狗模式;
1 定时器模式。
WDTNMI:选择 RST/NMI 引脚功能(在 PUC 后被复位)
0 RST/NMI 引脚为复位端;
1 RST/NMI 引脚为边沿触发的非屏蔽中断输入。
WDTNMIES:选择中断的边沿触发方式
0
1
WDTHOLD:停止看门狗计数器
0 WDT 功能激活
1 时钟禁止输入,计数停止
WDTCNT 计数单元
WDTCNT 时 16 位增计数器,由于 MSP430 所选定的时钟电路产生的固定周期脉冲信号对计数器进行加
法计数。如果计数器事先被预置的初始状态不同,那么从开始计数到计数溢出为止的时间就不同。
WDTCNT 不能直接通过软件直接通过软件存取,必须通过看门狗定时器的控制寄存器 WDTCTL 来控制。
IE1 中断允许寄存器
WDTIE:看门狗定时器模式中断允许控制位
0 看门狗定时器中断禁止
1 看门狗定时器中断允许
NMIIE:非屏蔽中断允许控制位
0 禁止非屏蔽中断
1 允许非屏蔽中断
IFG1 中断标志寄存器
WDTIFG:看门狗定时器模式中断标志
0 无看门狗定时器中断标志
1 有看门狗定时器中断标志
NMIIFG:非屏蔽中断标志
0 无非屏蔽中断标志
1 有非屏蔽中断标志
看门狗定时器操作
用户可以通过 WDTCTL 寄存器中的 WDTTMSEL 和 WDTHOLD 控制位设置 WDT 工作在看门狗模式、定
时器模式和低功耗模式。
看门狗模式
由于在上电复位或系统复位时,WDTCNT 和 WDTCL 两寄存器内容被全部清除(晶振为 32768Hz,
SMCLK=1MHz):
复位后,工作在看门狗模式,以 ACLK 为时钟,WDT 定时时间为 32ms。
上述情况将导致 WDT 的运行自动进入看门狗模式。
所以,用户软件一般都需要进行如下操作:
进行 WDT 的初始化:设置合适的时间(通过 SSEL、IS0、IS1 位来选定)。
周期性的对 WDTCNT 清零:防止 WDT 溢出,保证 WDT 的正确使用。
在看门狗模式下,如果计数器超过了定时时间,就会产生复位和激活系统上电清除信号,系统从上电 复位的地址重启动。
如果系统不用看门狗功能,应该在程序开始处禁止看门狗功能。
定时器模式
WDTCTL 的 WDTTMSEL 位置位选择定时器模式。这一模式产生选定时间的周期性中断。定时时间
可以通过 WDTCTL 的 WDTCNCTL 位置位来开始。
改变定时时间而不同时清楚 WDTCNT 将导致不可预料的系统立即复位或中断。定时时间可以通过 WDTCTL 的 CNCTL 位置位来开始。
如果先后分别进行清除和定时时间选择,则可能立即引起不可预料的系统复位或中断。
另外,在终场工作时。改变时钟源可能导致 WDTCNT 额外的计数时钟。
低功耗模式
当系统不需要 WDT 做看门狗和定时器时,可关闭 WDT 以减小功耗。
控制位 WDTHOLD=1 时关闭 WDT,这时看门狗停止工作。
看门狗定时器头文件定义
在 msp430x14x.h 头文件中定义如下:
/************************************************************
* WATCHDOG TIMER
************************************************************/
#define WDTCTL_ (0x0120) /* Watchdog Timer Control */
DEFW( WDTCTL , WDTCTL_)
/* The bit names have been prefixed with "WDT" */
#define WDTIS0 (0x0001)
#define WDTIS1 (0x0002)
#define WDTSSEL (0x0004)
#define WDTCNTCL (0x0008)
#define WDTTMSEL (0x0010)
#define WDTNMI (0x0020)
#define WDTNMIES (0x0040)
#define WDTHOLD (0x0080)
#define WDTPW (0x5A00)
/* WDT-interval times [1ms] coded with Bits 0-2 */
/* WDT is clocked by fMCLK (assumed 1MHz) */
#define WDT_MDLY_32 (WDTPW+WDTTMSEL+WDTCNTCL) /* 32ms interval (default) */
#define WDT_MDLY_8 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0) /* 8ms " */
#define WDT_MDLY_0_5 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1) /* 0.5ms " */
#define WDT_MDLY_0_064 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0) /* 0.064ms " */
/* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ADLY_1000 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL) /* 1000ms " */
#define WDT_ADLY_250 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms " */
#define WDT_ADLY_16 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms " */
#define WDT_ADLY_1_9 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)/* 1.9ms " */
/* Watchdog mode -> reset after expired time */
/* WDT is clocked by fMCLK (assumed 1MHz) */
#define WDT_MRST_32 (WDTPW+WDTCNTCL) /* 32ms interval (default) */
#define WDT_MRST_8 (WDTPW+WDTCNTCL+WDTIS0) /* 8ms " */
#define WDT_MRST_0_5 (WDTPW+WDTCNTCL+WDTIS1) /* 0.5ms " */
#define WDT_MRST_0_064 (WDTPW+WDTCNTCL+WDTIS1+WDTIS0) /* 0.064ms " */
/* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ARST_1000 (WDTPW+WDTCNTCL+WDTSSEL) /* 1000ms " */
#define WDT_ARST_250 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms " */
#define WDT_ARST_16 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms " */
#define WDT_ARST_1_9 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0) /* 1.9ms " */
所以我们使用 WDT 的时候可以直接写成下面的形式:
做定时器用:
WDTCTL = WDT_ADLY_1000; // 以 ACLK 延迟 1000ms
WDTCTL = WDT_MDLY_32; // 以 SMCLK 延迟 32ms
// 记得要开 IE1 中的 WDTIE 和_EINT();
做看门狗用:
WDTCTL = WDT_ARST_1000; // 以 ACLK 设定 1000ms 的看门狗
WDTCTL = WDT_MRST_32; // 以 SMCLK 设定 32ms 的看门狗
// 由于在看门狗的定义里面包含 WDTCNCTL
// 所以需要喂狗的时候只需要再写一边 WDTCTL = WDT_MRST_32; 就行了
上一篇:浅谈msp430f5529入门(1)——时钟模块DCO
下一篇:TI MSP430 如何使用 DCO 倍频
推荐阅读
史海拾趣
随着市场的扩大和竞争的加剧,Semi-Films Division 意识到品质是品牌的核心。因此,公司加大了对产品质量控制的投入,引入了先进的生产设备和检测手段,确保每一批产品都符合客户的要求。同时,公司还建立了完善的质量管理体系,对生产过程进行全程监控,确保产品质量的稳定性和可靠性。这些努力使得 Semi-Films 的产品在市场上赢得了良好的口碑。
进入21世纪后,随着全球电子产业的蓬勃发展,Semi-Films Division 开始积极拓展国际市场。公司参加了多个国际性的电子产品展览会,与全球各地的客户建立了联系。同时,公司还加大了对海外市场的投入,设立了多个海外办事处和代理商,为客户提供更加便捷的服务。这些举措使得 Semi-Films 的产品逐渐走向世界,成为国际知名的薄膜材料供应商。
Anderson Electronics Inc公司成立于电子行业的初期,创始人凭借对电子技术的深厚造诣和对市场需求的敏锐洞察,成功开发出了一款具有划时代意义的电子产品。这款产品以其卓越的性能和稳定的品质迅速占领了市场,为公司赢得了良好的口碑和丰厚的利润。在创业初期,公司注重技术创新和研发投入,不断推出新产品,逐步在电子行业中崭露头角。
为了进一步提升公司的综合实力和市场竞争力,EOREX公司积极开展跨界合作。他们与汽车制造商、通信设备商等多个行业的领军企业建立了紧密的合作关系,共同研发和推广具有创新性和前瞻性的电子产品。这些跨界合作不仅为EOREX带来了更多的商业机会和市场份额,还推动了整个电子行业的创新和发展。
发展历程:2007年,公司率先在业内引入了ERP系统,实现了企业高效智能的生产管理、财务管理、物流管理和决策管理。这一创新举措极大地提升了客户订单的响应速度,使德索五金电子步入了数字化信息时代。
成果与影响:ERP系统的引入使德索五金电子的管理水平迈上了新的台阶,为企业的快速发展提供了有力支持。
为了进一步扩大市场份额和拓展应用领域,Atmel(Microchip)积极与其他企业开展合作。公司与多家知名企业建立了战略合作关系,共同推动微控制器及相关技术在各个领域的应用。通过与合作伙伴的紧密合作,Atmel的产品已经广泛应用于工业、消费、安全、通信、计算和汽车等多个领域,为这些领域的发展提供了强有力的支持。
这五个故事旨在展现Atmel(Microchip)在电子行业中的发展历程和成就,涵盖了从创业初期到被收购后的不同阶段。通过这些故事,我们可以看到Atmel(Microchip)如何凭借技术创新、市场拓展和合作发展,逐渐成为了微控制器领域的领军企业。
去做人生的那棵树,关于工程师命运的感慨。 做为一个在嵌入式系统行业从业十年的工程师来说,为了生存与发展,现在也还一天天忙于奔命,连以前最常来的这个BBS论坛也有近一个多月没来,以下有些想法希望能与大家分享。希望能给刚入道的工程师或已经 ...… 查看全部问答∨ |
天嵌科技继推出Linux2.6.25完整移植教程之后,再推出TQ2440精品视频教程, 使你更容易上手,更快捷入门,更早进入嵌入式开发的殿堂。 欢迎大家到http://www.embedsky.net/technical/homePage.html 下载, 到http://www.embedsky.net/bbs 开题讨 ...… 查看全部问答∨ |
利用SOPC Builder生成系统时,需要添加一个SSRAM模块进去,但是QUARTUS II 7.2版本的SSRAM型号是CY7C1380C,而我的板子上面用到的是IS61LPS12836A_200TQLI,我查看了二者的datasheet,发现二者引脚完全一致,以及真值表也一样,请问能否用CY7C1380C ...… 查看全部问答∨ |
|
1 引言 本文介绍的音量控制IC为M62429,市面上有很多类似的产品,例如:FM62429、CD62429、CSC62429等。其实,掌握了一两种IC的编程方法,稍作改动就很容易移植到其它产品上。M62429是日本三菱公司的音量控制IC,音量调节范围是0~-83 ...… 查看全部问答∨ |
在wince 6.0下,相同的代码,用在两个环境下,s3c2442x的芯片 在一个环境下正常,在另一个环境下: IIC数据发送出去后,从设备不返回完成标志是什么原因?就是说CON寄存器的第5位没有被置一。 哪位大侠碰到过,指点下,不胜感激~… 查看全部问答∨ |
哪位大哥有Win CE Device dirver Kit (设备驱动程序设计指南)的电子书,或者有RT方面的资料,可以给我转一份,谢谢!! m-ja@163.com… 查看全部问答∨ |
|