在以前24x、28x系列中,pwm、cap、qep模块都是在事件管理器A里的,每个事件管理器有两个通用定时器,定时器的时钟源可以设置为QEP,这样cap模块就可以使用QEP做时钟源。但在F28m35里面没看到有事件管理器的概念啊,也没看到关于ECAP模块时钟源选择方面的说明,如果我还是想用QEP作为ECAP的时钟源,该怎么操作啊,求大牛指导!!!!!!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在以前24x、28x系列中,pwm、cap、qep模块都是在事件管理器A里的,每个事件管理器有两个通用定时器,定时器的时钟源可以设置为QEP,这样cap模块就可以使用QEP做时钟源。但在F28m35里面没看到有事件管理器的概念啊,也没看到关于ECAP模块时钟源选择方面的说明,如果我还是想用QEP作为ECAP的时钟源,该怎么操作啊,求大牛指导!!!!!!
Yijun,
280x以后出来的产品都是把时间管理器中的那些外设都独立出来,包括eCAP, PWM, QEP, ADC。C2000现在主推的产品包括piccolo, delfino ,concerto都是这样子。
eCAP使用的是系统做timebase时基进行计数,捕获外部信号。没办法用QEP做eCAP的时钟源。
我看了一下2812的QEP
GP timer 2 (EVA) and GP timer 4 (EVB) can be used with the QEP circuits, in directional up-/down-counting mode. In this case, the QEP circuits provide both the clock and direc-tion inputs to the timer. 这个功能现在用独立的QEP模块来实现了,有独立的定时器,QEP输入计数脉冲和方向。
而CAP模块Each EVA capture unit can choose GP timer 2 or 1 as its time base;
当时如果你使用GP timer2给QEP模块,让它作为timebase计数,再用这个timer2来给CAP捕获信号计数,如果QEP方向变化,计数就会增减,就不能准确计算捕获信号的脉宽和周期。不明白你为什么要这么做。
Eric
谢谢您的回答,我具体说一下我要的功能:
在ecap模块中,有这样的功能,当有捕获事件发生时(如发生了CEV1,然后设置发生一次捕获事件便产生中断),时间戳计数器TSCTR的值便被加载到CAP1寄存器里,也就是说,CAP1寄存器里存储着捕获中断发生瞬间的TSCTR的值。
我现在就是要利用这一点,当捕获中断发生时,要获取EQEP里QPOSCNT的值,且要足够精确。如果在捕获中断发生后,进入中断服务程序里用程序语句来读取QPOSCNT的值,这样可能我读取到的就不是中断瞬间那个QPOSCNT的值,而是有几个时钟的滞后,在这几个时钟里可能QPOSCNT又变化了几个数值,这样就不精确了。
在以前的24x、28x中,QEP电路可以为管理器的通用定时器提供时钟和方向,这样cap模块里的时间戳计数器TSCTR就可以跟随QPOSCNT同步变化,当捕获事件发生,TSCTR的值存入CAP1(或CAP2-4都行,看程序怎么设置),那么就不用担心要进入中断服务程序后再读取值时滞后的那几个时钟了,CAP1里存储的值就是中断瞬间QPOSCNT的值。
请问有什么解决方法