工具/软件:Code Composer Studio
我想使用PWM TRIG启动ADC的SOC,并使用ADC_INT启动TRIG CLA任务。 CLA任务完成后,执行CLA_ISR。 在CLA_ISR中分配GPIO切换以确定执行频率。
问题是更改PWM TRIG频率不会影响CLA_ISR执行频率,但ADC ACQPS会影响。
CLA_ISR的工作原理是什么? 如何实现CLA任务与PWM触发同步?
谢谢!
以下是从Example_2806xClaAdc修改的代码:
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.
工具/软件:Code Composer Studio
我想使用PWM TRIG启动ADC的SOC,并使用ADC_INT启动TRIG CLA任务。 CLA任务完成后,执行CLA_ISR。 在CLA_ISR中分配GPIO切换以确定执行频率。
问题是更改PWM TRIG频率不会影响CLA_ISR执行频率,但ADC ACQPS会影响。
CLA_ISR的工作原理是什么? 如何实现CLA任务与PWM触发同步?
谢谢!
以下是从Example_2806xClaAdc修改的代码:
//初始化CLA寄存器
EALLOW;
Cla1Regs.MVECT2 =(UINT16)(&Cla1Task2 -&Cla1Prog_Start)*sizeof (UINT32);
Cla1Regs.MVECT8 =(UINT16)(&Cla1Task8 -&Cla1Prog_Start)*sizeof (UINT32);
Cla1Regs.MPISRCSEL1.bit.PERINT2SEL = CLA_INT2_ADCINT2;// ADCINT2启动任务2
Cla1Regs.MMEMCFG.bit.PROGE = 1; //将CLA程序存储器映射到CLA
Cla1Regs.MCTL.Bit.IACKE = 1; //启用IACK通过软件启动任务
Cla1Regs.MIER.ALL =(M_INT8 | M_INT2); //启用任务8和任务2
Cla1ForceTask8andWait(); //强制CLA任务8.
//这将把ConversionCount初始化为零
AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1;//启用非重叠模式
ADcRegs.ADCCTL1.bit.INTPULSEPOS =0; // ADCINT在ADC开始转换时跳闸
AdcRegs.INTSEL1N2.bit.INT2E = 1; //启用ADCINT2
AdcRegs.INTSEL1N2.bit.INT2CONT =0; //禁用ADCINT2连续模式
AdcRegs.INTSEL1N2.bit.INT2SEL = 1;// 设置EOC1触发ADCINT2
AdcRegs.ADCSOC1CTL.bit.CHSEL = 2;// 将SOC1通道选择设置为ADCINA2
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5; //在EPWM1A上设置SOC1启动触发器
AdcRegs.ADCSOC1CTL.bit.ACQPS = 63; //更改此选项会影响CLA_ISR的执行频率
EDIS;
//假定ePWM1时钟已在InitSysCtrl()中启用;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
EPwm1Regs.ETSEL.bit.SOCAEN = 1;//在组上启用SOC
EPwm1Regs.ETSEL.bit.SOCASEL = 4;//在计数增加时从CPMA中选择SOC
EPwm1Regs.ETPS.bit.SOCAPRD = 1;//在第一个事件上生成脉冲
EPwm1Regs.CMPA.Half.CMPA = 0x0080;// set比较值
EPwm1Regs.TBPRD = 3000;//更改此项不会影响CLA_ISR执行频率
EPwm1Regs.TBCTL.bit.CTRMODE = 0;//开始计数
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;