EPWM-ADC-CLA中断触发流程分析

文章描述了一个嵌入式系统中对EPWM和ADC中断的配置过程。首先关闭EPWM中断,然后在ADC转换完成时启用ADC中断,触发CLA任务。修改后的设置是在ADCSOC10完成后产生中断,选择了特定的触发源和通道。最后,配置CLA中断由ADC中断触发,而非EPWM中断。
摘要由CSDN通过智能技术生成

在底点触发EPWM,然后EPWM触发CLA

在顶点TBRPD触发ADC转换

 

修改后:在顶点触发ADC转换,转换完成产生ADC的SOC中断信号,中断信号触发CLA任务

没有用到EPWM中断,所以关闭EPWWM中断

第一步:先关闭EPWM中断

inline void InitEPwm1_Six_step_DPWM(void)

inline的作用,把这一段代码直接复制到程序这里不需要调用,占空间但是速度快。

本项目中只用到了epwm1中触发中断,其余两个没有用EPWM中断,所以只需要关闭EPWM1中的中断使能位即可。

EPwm1Regs.ETSEL.bit.INTSEL = 0x1;

EPwm1Regs.ETSEL.bit.INTEN = 0x0;// 关闭EPWM的中断INT

EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;

第二步:ADC中配置中断

//AdcRegs.INTSEL1N2.bit.INT1SEL   = 0x05;//(之前的)

这个配置在SOC5(具体是ADC哪一个需要自己的查一下)完成以后触发ADC中断ADC的中断是完成转换以后,需要确定完成哪一个转化产生中断

//SOC5---EPWM1Asoc---ADCINB0----Sample window is 7 cycles long

修改后的:AdcRegs.INTSEL1N2.bit.INT1SEL   = 0x0A;

现在修改为在SOC10完成后触发ADC中断(这个SOC10主要是看你自己的排序,如果你后边没有用到,可以选择提前的。)

AdcRegs.ADCSOC11CTL.bit.TRIGSEL=0x05;

触发源的选择,我在EPWM1A配置了SOC信号,ADC这里配置相对应的即可

这样一旦EPWM1A产生触发信号,TRIGSE都要选择这个触发源,因为其他的我没有配置我这边就可以开始转换。

 

    AdcRegs.ADCSOC11CTL.bit.CHSEL=0xE;

    AdcRegs.ADCSOC11CTL.bit.ACQPS=samplewindow;

AdcRegs.INTSEL1N2.bit.INT1E     = 0x1;// 使能中断

修改前:AdcRegs.INTSEL1N2.bit.INT1CONT  = 0x1;//连续模式

修改后:AdcRegs.INTSEL1N2.bit.INT1CONT= 0x0;//断续模式,需要清除标志位(后来修改成连续模式了,原因未知)

//ADC转换完成产生一个EOCEOC产生中断

这个中断可以触发别的事情

第三步:修改CLA中的中断触发方式

Cla1Regs.MPISRCSEL1.bit.PERINT1SEL=CLA_INT1_EPWM1INT;//CLA_INT1_ADCINT1;

一个是EPWM1INT中断

Cla1Regs.MPISRCSEL1.bit.PERINT1SEL=CLA_INT1_ADCINT1;//CLA_INT1_ADCINT1;

一个是ADC中断

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值