打印
[学习笔记]

AC7801xPWM同步方式输出和单通道捕获demo

[复制链接]
6870|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 LearningH 于 2021-7-20 17:10 编辑

      在我们AC7801x的pwm官方例程里,发现没有pwm同步方式输出的例程,这里提供一个同步输出的demo。这个demo是在之前完成的单通道捕获工程上加的。所以这个例程可以实现pwm同步输出和单通道捕获功能。

   

     硬件:AC7801开发板
     IDE:keil 5.23

     pwm同步输出功能,在参考手册是这样的:
     以MCVR寄存器为例。这里有两种方式实现同步,一种是软件同步,一种是硬件同步(demo里是用的软件方式同步)。
     里面又分为通过加载点同步(左边的路线),立即同步(右边的路线)。
     通过加载点同步的话,改变频率或者占空比,pwm计数器不会马上被清零,在加载点再一起同步。波形是平顺过度的,波形不会突变;
     立即同步的方式的话,改变频率或者占空比,pwm计数器马上会被清零,马上开始新的周期计数,从波形上看,是有“突变”的。

下图是cnt同步的流程图:


下面分别附上各种情况下的测试波形(1通道是PWM1_CH0、2通道是PWM1_CH1、3通道是给的同步信号测试IO):

1. PWM组合模式输出、加载点同步方式

同步之前是4k。

同步之后是5k(程序里增加1k的频率)。
可见,波形是平滑过渡的。

2. PWM组合模式输出、立即同步方式


同步之前是7k。

同步之后是8k(程序里增加1k的频率)。
在3通道翻转信号里立刻开始新的波形。

3. PWM独立模式输出、加载点同步方式

同步之前是6k。

同步之后是7k(程序里增加1k的频率)。
可见,波形是平滑过渡的。


4. PWM独立模式输出、立即同步方式


同步之前是3k。

同步之后是4k(程序里增加1k的频率)。
在3通道翻转信号里立刻开始新的波形。


以上就是4种情况下的测试结果。

在用立即同步方式时,有一点是需要注意的:在立即同步之后,通道输出的电平取决于“先前的”电平,如果“先前的”电平为高,则通道输出电平为高;如果“先前的”电平为低,则通道输出电平为低。
举个例子,PWM独立模式输出、立即同步方式下,

同步之前是4k。

同步之后(3通道翻转信号),开始了一个新的周期,频率是5k,但是通道是输出低,直到下一个周期才输出高,相当于延迟了一个周期。这是因为在立即同步之前,通道的“先前的”电平是低,所以才输出低。如果“先前的”电平是高,这里就会输出高电平(就是上面的第4种测试的波形)。


可见,在一个周期之后,波形输出高。
不知道大家有没有注意到,在组合模式立即同步下,上面测试的第二种情况,立即同步之前,“先前的”电平是低电平,那为什么立即同步之后是高电平呢,不矛盾吗?其实不矛盾,因为在demo里,我把CH0通道设置为0了,立即同步后,CH0电平马上匹配了,所以才输出高。

总结:
如果用加载点同步方式更新,波形都是平缓度过的,没有突变。
如果用立即同步方式更新,波形会有“突变”。

最后用串口调试助手,打印PWM0_CH0捕获到的频率和占空比:

在pwm1输出的各种模式下,PWM0捕获到的频率和占空比都是对的(占空比0% ~ 100%占空比对应 0 ~ 255)。






8061960f14cf8a8a2e.png (197.57 KB )

8061960f14cf8a8a2e.png

12PwmSyncOutputAndSingleCHnCapture.rar

1.5 MB

使用特权

评论回复

相关帖子

沙发
里面有晴雨| | 2021-7-17 08:50 | 只看该作者
输出捕获一直没有找到相应的方式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

19

帖子

0

粉丝