本人想利用TimerA模块,实现“呼吸灯效果”遇到了麻烦
原理是启用TimerA向上/向下模式,比较模式,启用并进入CCR1的中断对P1.0操作(禁用了TAIFG,和CCIFG0),TA输出口p7.6用了toggle(实际程序运行并未使用该端口)
在该模式下一个工作周期CCR1中断会产生两次,即向上一次,向下一次。当然CCR1不能等于CCR0.否则CCR1=CCR0时,一个周期只产生一次中断。
初始设置CCR1=0;CCR0=4000;
(初始P1.0为0;TA工作进入向上中断时P1.0LED为1,向下中断P1.0为0)
一个周期完成后重新设置CCR1的值,使CC1=CCR1+4,这样输出的占空比减小。视觉上的现象就是LED又亮变暗。(初始CCR1=0此过程实现正常)
但是,当CCR1为3996时为了使LED由暗变量变化,设置CCR1=CCR1-4直至CCR1=0时,视觉上变化还是又亮变暗。
开始以为是程序逻辑出错。
后来测试了一下,设置初始值CCR1=3996,并使CCR1从3996往0方向变化。LED1.0仍然又亮变暗。
哪位熟悉TimerA操做的朋友能解释下原因??(开发板msp432)432文档没有具体解释在计时器运行时设置CCR1的影响。