梁工 发表于 2024-12-19 17:11:50

高级PWMA-设置任意时刻触发ADC例子

本例程输出3路互补的PWM1、PWM2、PWM3,用PWM4模式2(中央对齐)设置触发ADC的时刻,设置为在PWM2的下降沿前6us触发ADC,ADC转换时间为6us。PWM4没有允许输出。


本例使用PWM4触发ADC,触发时刻为PWM2下降沿前6us.
ADC输入端: P1.0(用户按需设置)。
PWM中断函数取反P3.3输出方波指示PWM中断.
ADC中断函数取反P3.4输出方波指示ADC中断.
串口1每隔1秒从P3.0 P3.1返回ADC值, 已转成十进制ASCII码.







梁工 发表于 2024-12-19 21:33:37

wnagming 发表于 2024-12-19 21:06
任意时刻触发?用在哪里?

跟PWM关联的ADC,比如电机驱动、逆变器等等电感负载。
电感的电流是变化的(内阻小时电流与时间成线性关系),所以要求在PWM占空比结束前一段时间开始转换ADC。

康辉55AA 发表于 2024-12-20 08:35:59

好的,我参考一下,正需要外部触发ADC的例子。谢谢。

大脸猫爱吃鱼 发表于 2025-5-27 22:53:08

梁工请问一下这例子是写哪个寄存器来使用PWM2来触发ADC呀

梁工 发表于 2025-5-28 00:11:34

大脸猫爱吃鱼 发表于 2025-5-27 22:53
梁工请问一下这例子是写哪个寄存器来使用PWM2来触发ADC呀

        PWMA_CR2   |= (7<<4);        // 触发ADC信号选择(TRG0), 1:计数器使能信号,2:更新事件, 3:比较脉冲, 4:比较OC1REF, 5:比较OC2REF, 6:比较OC3REF, 7:比较OC4REF.

大脸猫爱吃鱼 发表于 2025-5-28 06:19:45

梁工 发表于 2025-5-28 00:11
PWMA_CR2   |= (7

谢谢
页: [1]
查看完整版本: 高级PWMA-设置任意时刻触发ADC例子