请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
查看: 4311|回复: 8

STC8H/STC32G 的 PWM 同时捕获 4 路输入信号的周期和占空比,有视频讲解

[复制链接]

该用户从未签到

546

主题

9104

回帖

1万

积分

管理员

积分
14080
发表于 2022-12-8 22:56:12 | 显示全部楼层 |阅读模式
STC8H 同时捕获 4 输入信号的周期和占空比,有视频讲解
STC32 同时捕获 4 输入信号的周期和占空比,有视频讲解

STC8H/STC32G 的 PWM 同时捕获 4 路输入信号的周期和占空比-1.png
STC8H 同时捕获 4 输入信号的周期和占空比,有视频讲解
STC32 同时捕获 4 输入信号的周期和占空比,有视频讲解

截图202309200917164588.jpg
视频讲解    https://www.stcaimcu.com/forum.p ... 3184&extra=page%3D1



回复 送花

使用道具 举报

该用户从未签到

546

主题

9104

回帖

1万

积分

管理员

积分
14080
 楼主| 发表于 2022-12-8 22:58:55 | 显示全部楼层
1.png

该用户从未签到

546

主题

9104

回帖

1万

积分

管理员

积分
14080
 楼主| 发表于 2022-12-9 08:48:16 | 显示全部楼层
1.png

1.png

该用户从未签到

546

主题

9104

回帖

1万

积分

管理员

积分
14080
 楼主| 发表于 2023-1-30 10:12:26 | 显示全部楼层
21.8.12 同时捕获 4 路输入信号的周期和占空比

原理:使用高级 PWM 内部的两通道的捕获模块 CCx 和 CCx+1 同时捕获外部的同一个管脚,CCx 捕获
此管脚的上升沿,CCx+1 捕获此管脚的下降沿,CCx 的两次捕获值的差值即为周期,CCx+1 的捕
获值与 CCx 的前一次捕获值的差值即为占空比。

范例中实际测试如何接线:
使用 PWMA 的第一组捕获模块 CC1 和第二组捕获模块 CC2,同时捕获 PWM1P 管脚(P1.0),
其中 CC1 捕获 PWM1P 的上升沿,CC2 捕获 PWM1P 的下降沿,CC1 的捕获值减去前一次捕获值即
为周期,CC2 的捕获值减去 CC1 的前一次捕获值即为占空比。

PWMB 的 CC5 和 CC6 同时捕获PWM5(P2.0)、
PWMB 的 CC7 和 CC8 同时捕获 PWM7(P2.2)、

PWMA 的 CC3 和 CC4 同时捕获 PWM3P(P1.4)。

模拟的被测量信号发生器:
使用定时器 0 在 P1.0 上产生波形、
定时器 1 在 P1.4 上产生波形、
定时器 3 在 P2.0 上产生波形、
定时器 4 在 P2.2 上产生波形。

捕获值通过串口送到 PC。

测量输入波形用的是 16位高级PWM的模块PWMA和PWMB, 跟普通定时器/外部中断无任何关系

注意:
1、使用的是芯片内部的两路捕获模块同时捕获外部的同一个管脚,所以不需要将外部的多个管脚相连接。
2、由于没有设置复位触发信号,所以周期值和占空比值均需要作相应的减法运算才能得到。

若需要使用第一组 PWM / PWMA 定时器进行捕获功能或者测量脉宽时,输入信号只能从每路的正端输入,
即只有PWM1P/PWM2P/PWM3P/PWM4P 才有捕获功能和测量脉宽功能。

该用户从未签到

14

主题

69

回帖

335

积分

中级会员

积分
335
发表于 2023-4-18 16:51:21 | 显示全部楼层
神农鼎 发表于 2023-1-30 10:12
21.8.12 同时捕获 4 路输入信号的周期和占空比

原理:使用高级 PWM 内部的两通道的捕获模块 CCx 和 CCx+1 ...

从 PWM1P_2 和 PWM1P_3 输入的信号也可以捕获其占空比么?
回复 支持 反对 送花

使用道具 举报

该用户从未签到

14

主题

69

回帖

335

积分

中级会员

积分
335
发表于 2023-4-18 16:53:37 | 显示全部楼层
神农鼎 发表于 2023-1-30 10:12
21.8.12 同时捕获 4 路输入信号的周期和占空比

原理:使用高级 PWM 内部的两通道的捕获模块 CCx 和 CCx+1 ...

如果 PWM1P 用于捕获外部输入信号的占空比了,那么PWM2P 就无法再捕获其它输入信号的占空比了是么?
回复 支持 反对 送花

使用道具 举报

该用户从未签到

14

主题

69

回帖

335

积分

中级会员

积分
335
发表于 2023-4-18 16:56:02 | 显示全部楼层
神农鼎 发表于 2023-1-30 10:12
21.8.12 同时捕获 4 路输入信号的周期和占空比

原理:使用高级 PWM 内部的两通道的捕获模块 CCx 和 CCx+1 ...

如果 PWM1P 用于捕获外部输入信号的占空比,那么 PWM4P_4 还能向外输出占空比可调的脉冲么?
回复 支持 反对 送花

使用道具 举报

该用户从未签到

14

主题

69

回帖

335

积分

中级会员

积分
335
发表于 2023-4-18 16:57:49 | 显示全部楼层
神农鼎 发表于 2023-1-30 10:12
21.8.12 同时捕获 4 路输入信号的周期和占空比

原理:使用高级 PWM 内部的两通道的捕获模块 CCx 和 CCx+1 ...

如果 PWM6_2 用于捕获外部信号的占空比,那么 PWM8_2 还可以向外输出占空比可调的脉冲信号么?
回复 支持 反对 送花

使用道具 举报

该用户从未签到

4

主题

12

回帖

63

积分

注册会员

积分
63
发表于 2023-6-1 23:15:18 | 显示全部楼层

PWM不进中断

本帖最后由 pingfr 于 2023-6-3 11:31 编辑

这个例程不进PWM_ISR中断怎么办?仿真运行时进入一次后就不再进中断了,用示波器看P1.0管脚方波波形是正常的
初始化如下:

        PWMA_CCER1 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道
        PWMA_CCMR1 = 0x01; // CC1 为输入模式 , 且映射到 TI1FP1 上, 0数字滤波
        PWMA_CCMR2 = 0x02; // CC2 为输入模式 , 且映射到 TI1FP2 上, 0数字滤波
        PWMA_CCER1 = 0x11;        // 使能 CC1 上的捕获功能 , 使能 CC2 上的捕获功能
        PWMA_CCER1 |= 0x00; // 设置捕获极性为 CC1 的上升沿
        PWMA_CCER1 |= 0x20; // 设置捕获极性为 CC2 的下降沿

        PWMA_CCER2 = 0x00;
        PWMA_CCMR3 = 0x01;        // CC3 为输入模式 , 且映射到 TI3FP3 上
        PWMA_CCMR4 = 0x02;        // CC4 为输入模式 , 且映射到 TI3FP4 上
        PWMA_CCER2 = 0x11;        // 使能 CC3 上的捕获功能 , 使能 CC4 上的捕获功能
        PWMA_CCER2 |= 0x00; // 设置捕获极性为 CC3 的上升沿
        PWMA_CCER2 |= 0x20; // 设置捕获极性为 CC4 的下降沿

        PWMA_CR1 = 0x01; //        1:使能计数器
        PWMA_IER = 0x1e; // 使能 CC1/CC2/CC3/CC4 捕获中断


从运行watch截图能看出来,g_PWMA_SR已经等于0x07了,说明捕获到波形上升下降沿了,但就是不进PWM中断函数,为了调试,我在定时器0中断里读的g_PWMA_SR = PWMA_SR,哪位能给指点一下?

PWM不进中断

PWM不进中断
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-4-19 03:43 , Processed in 0.068921 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表