|
本帖最后由 motoedy 于 2016-4-27 19:53 编辑
准备用MSP430做脉冲输出,
使用定时器A0,周期用CCR0,脉宽用CCR1
定时器时钟ACLK=32768,增计数模式,PWM置位/复位输出
配置代码如下:
- TACTL |= TASSEL_1 + MC_1;
- TACCTL0 |=CCIE;
- TACCR0=0x1998; //CCR0赋值,欲装载值
- TACCR1=0x0CCC; //CCR1赋值,欲装载值
- TACCTL1|=OUTMOD_3; //PWM置位/复位
复制代码
假如只输出一个脉冲/秒,脉冲宽度是100mS,在TA0的CCR0的中断里面关闭定时器A0,
下一个脉冲要输出时在重新开启;
OUTMOD_3模式是与CCR1匹配后置位,与CCR0匹配后复位,
所以,正确的逻辑关系应该是空闲为低,100mS的脉冲时为高,
但是实际调试出来的是相反的逻辑,如下图:
断点打在CCR0的中断里发现,这个问题是因为当已经关闭了定时器A后,奇怪的又与CCR1匹配了而导致的。。
如果把计数模式改为连续计数模式,CCR0中断人为的清空TAR,逻辑就是对的,很奇怪;
如果连续计数模式,CCR0中断人为的清空TAR,这不是和增计数模式没有区别了么?都是计到CCR0后回到0;
为什么得出的结果不一样呢?
各位有没遇到过类似的问题?
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|