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.
对于例程adc_soc_epwm_cpu01,我们在设置采样频率为200k后,为了持续采样,将211行asm(" ESTOP0");注释掉,结果虽然程序持续运行了,但采样频率却改变了,我们输入正方波后采样结果对比如下
未注释掉时采样频率正确:
注释掉时,采样频率明显下降(没几个数就出现0):
请问这是为什么呢,如何解决呢?
你好,这个例程的采样频率是通过PWM触发的,所以你是更改了PWM的频率?具体是如何修改的?
另外,你说输入的是正方波?这样的话确实会有高低电平的变化,那采样结果不对的是未注释掉时的波形?
你好,我确定测的是频率为1k的正方波,我把PWM的频率改成200K了.没有注释掉asm(" ESTOP0")的时候,ADC在一个正方波周期采了200个点,说明采样频率是200K,但是这个时候程序不能持续运行。注释掉asm(" ESTOP0")之后,程序能持续运行,但是一个正方波周期只采了几个点,采样频率变小了很多
有可能动作周期需要重新初始化一下,你试一下在197行代码后面加上这句:
EPwm1Regs.TBPRD = 0x1000; // Set period to 4096 counts
即:
EPwm1Regs.ETSEL.bit.SOCAEN = 0; //disable SOCA
EPwm1Regs.TBCTL.bit.CTRMODE = 3; //freeze counter
EPwm1Regs.TBPRD = 0x1000; // Set period to 4096 counts add this
你可以看一下这个例程:C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2837xd\examples\cpu1\adc_soc_continuous
这个例程是持续采样直到最大采样率,注释掉之后应该能持续采样。
我最近没办法测试例程,不知道你对例程有做过其他修改吗?还是只更改了采样频率和注释asm(" ESTOP0")?
如果只是注释asm(" ESTOP0")的话代码能正常运行吗?