Thread 中讨论的其他器件:SysConfig
您好!
ADC SOC 由源 ePWM 通过 CMPD 计数匹配触发、与 ISR 抽取时间相比没有时间限制。 将 CMPD 配置为匹配 ADC EOC 触发的 TBPRD 计数的代码对 ISR 空闲执行时间5µs 增加到25µs μ s 没有影响。 为250µs 匹配计数设置已配置的最小 SOCA 触发时间。 奇怪的是、TRM 图18.4.18-4 CTR=PRD 未显示内部视图、SOCA 如何成为任何 SOC#的 ADC EOC 的触发源。
请参阅以下代码、在为 CMPD 配置的任何间隔匹配计数中、SOCA 不会触发 SOC 的 EOC。 25µs CMPD 2500匹配计数、SOCA 仍会触发 ADC EOC 以实现5µs 空闲、完全激活。 ISR 的250µs μ s 时间应受触发 ADC SOC 的 CMPD 的限制。 GPIO 抽取脉冲宽度(150µs μ s)、但包括 ISR 循环之外的死区时间、GPIO 脉冲是高电平有效周期。
/*清除 ePWM 触发中断*/
ePWM_DisableInterrupt (obj->pwmHandle[0]);
//为周期设置 CMPD 影子加载
EPWM_setCounterCompareShadowImage LoadMode (obj->pwmHandle[cnT]、
ePWM_COUNTER_COMPARE_D、
ePWM_COMP_LOAD_ON_CNTR_PERIOD);//ePWM_COMP_LOAD_ON_CNTR_ZERO
//设置 EPWM1触发脉冲,TBCTR=50µs μ s*5 μ s 或250µs 25µs μ s*1 CMPD-D
//设置事件触发器选择寄存器(ETSEL)
ePWM_setADCTriggerSource (obj->pwmHandle[0]、ePWM_SOC_A、ePWM_SOC_TBCTR_D_CMPD);
//启用 EPWM1以触发 ADC0采样事件
ePWM_enableADCtrigger (obj->pwmHandle[0]、ePWM_SOC_A);
//清除 INT 标志和事件触发器清除寄存器(ETCLR)
ePWM_clearEventTriggerInterruptFlag (obj->pwmHandle[0]);
ePWM_clearADCTriggerFlag (obj->pwmHandle[0]、ePWM_SOC_A);
//为 ADC 触发器写入值(20kHz SOC_Int*5TBCTR= 250µs μ s、1周期= 50µs μ s)
ePWM_setCounterCompareValue (obj->pwmHandle[0]、ePWM_COUNTER_COMPARE_D、5);