[求助] 新手求助 如何产生周期信号

zbnzbnzbnz   2015-1-12 21:17 楼主
现在还是一片茫然 问题如下
1、用WDT产生的周期信号是不是都是固定周期的(头文件里都写好了 如
#define WDT_MDLY_8          (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0)   
2.如何产生一个任意周期的周期信号、
3.三个时钟到底各有什么作用啊?
4.如何用32.768K的低速晶振在Timera产生一个1S一跳的信号(TimerA的分频比是否固定为2 4 8)?
新手初学 问题可能有些优质 请各位大神帮忙回答了 感激不尽

回复评论 (7)

应该使用定时器而非WDT,定时器的溢出时间可以自由设置,配合适当代码可以实现任意定时周期,据此再用代码取反IO的输出状态,得到的便是周期信号。这里最好使用定时器中断模式。
关于定时器的具体使用方法,可以阅读器件手册,也可以去看书。关于MSP430的入门书籍可以看看《MCU工程师练成记》这本书。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2015-1-12 22:05
引用: chunyang 发表于 2015-1-12 22:05
应该使用定时器而非WDT,定时器的溢出时间可以自由设置,配合适当代码可以实现任意定时周期,据此再用代码取反IO的输出状态,得到的便是周期信号。这里最好使用定时器中断模式。
关于定时器的具体使用方法,可以阅读器件手册,也可以去看书。关于MSP430的入门书籍可以看看《MCU工程师练成记》这本书。
谢谢 刚又看了几个例程 大概就是设置CCRO的值是把我想了一下您看这样对不对

CCTL0 = CCIE;                  
    CCR0 = 4096*30;                                   
    TACTL = TASSEL_1 + ID_3 + MC_1

这样就是一个30秒的计数器是吧
点赞  2015-1-12 22:17
引用: zbnzbnzbnz 发表于 2015-1-12 22:17
谢谢 刚又看了几个例程 大概就是设置CCRO的值是把我想了一下您看这样对不对

CCTL0 = CCIE;                  
    CCR0 = 4096*30;                                   
    TACTL = TASSEL_1 + ID_3 + MC_1

这样就是一个30秒的计数器是吧



建议你动手试试而非空对空的问“对不对”。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2015-1-12 22:48
引用: chunyang 发表于 2015-1-12 22:48
建议你动手试试而非空对空的问“对不对”。


嗯 我去试试 谢谢

点赞  2015-1-12 22:53
WDT可以产生周期性信号 ,但它有特殊用途,是在非正常情况下才让它产生周期信号的。

一般有32768晶体振荡器时,会配有实时钟,配置好RTC寄存器后即可产生周期性中断,
点赞  2015-1-13 09:52
引用: dontium 发表于 2015-1-13 09:52
WDT可以产生周期性信号 ,但它有特殊用途,是在非正常情况下才让它产生周期信号的。

一般有32768晶体振荡器时,会配有实时钟,配置好RTC寄存器后即可产生周期性中断,
今天来实验室又发现了一个问题 所配备的板子并不含RTC模块 自己准备用TimerA的增减计数模式来产生30S的信号(增模式在65536就溢出了 最多只能产生周期16S的信号)
但是同时又有一个问题 我要做一个相当于交通信号灯的程序 如何读取TAR模块 即计数器里面的值??而且如果读到的话 由于TAR一增一减(从0-CCR0再CCR0-0)有2个相同的值 如何读取 求教!

点赞  2015-1-13 10:59
引用: dontium 发表于 2015-1-13 09:52
WDT可以产生周期性信号 ,但它有特殊用途,是在非正常情况下才让它产生周期信号的。

一般有32768晶体振荡器时,会配有实时钟,配置好RTC寄存器后即可产生周期性中断,


刚刚又产生了一个很好的想法,设置timerA周期为1S 每次中断控制全局变量A+1 然后A就间接代表时间了 哈哈 逛论坛还可以来思路
我去试试
点赞  2015-1-13 11:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复