现在想利用413MCU的TIMER_A的比较模块来产生1路125KHZ方波,同时还想利用TIMER_A的捕获模块来捕捉过来的数据,这两种情况必须能够同时触发。调试时方波很稳定,而且根据方波其他程序也调好了。SMCLK为1MHZ,TIMER_A具体设置如下:
TACTL|=MC_1+TASSEL_2+ID_0;//TASSEL_2选定SMCLK为时钟频率,MC_1选定增计数方式,ID_0选定不分频
TACCTL1=OUTMOD_7; //OUTMOD_7选定为输出方式7
TACCR0=8-1;//125KHZ,50%方波
TACCR1=4;
但是调到捕获的时候,因TIMER_A已经选定增计数方式了,TAR到TACCR0会自动清零,捕获就没有办法实施啦!请问这种情况怎么解决?
是不是在413MCU中125KHZ方波需要其他方式产生?或者换个415等MCU带2个16位的TIMER。
kqian0327:
你好,
有两种解决措施:
1.捕获TACCR1的值小于PWM输出值,TACCR0。
2.建议还是换一个带两个Timer的MCU来做,比如415。
step by step:
楼主,
看你捕获信号的情况了,理论上可以试试软件的方法来实现:CCR0中断和捕获中断都打开,在CCR0中断里面记录下上次捕获中断发生以来进入CCR0中断的次数n,然后下一次进入捕获中断是做一个计算:
CCR0-TAR1+n*CCR0+TAR2
TAR1为上次捕获中断时的TAR值,TAR2为第二次捕获中断发生时的TAR值
当然如果要求捕获和定时都比较精确,还是推荐用两个定时器来实现。