富士通MB95F636H输出PWM

富士通MB95F636H输出PWMPPS 寄存器用来配置 PWM 周期 PDS 寄存器用来配置 PWM 的占空比 即占空比 PDS PPS PPGS 和 REVC 的每一位都代表一个输出 即 bit0 表示 PPG00 bit1 表示 PPG01 以此类推 当 PPGS 对应的位为 1 时启动该输出的计数 即开启 PWM 模式 REVC 表示输出是否反相 对应位为 1 则该输出反相 否则不反相 PC 寄存器是最重要的寄存器 PCn1 和 PCn0 的配置略有不同 毕竟 PCn1 是能成为 16 位 PPG 高位

富士通MB95F636H输出PWM


终于毕业了,想想要不是毕设导师不让我实习,我可能也不会进入这一行。还好之前做过一些竞赛,所以逃脱导师魔爪后很快就找到了一份单片机的工作。

PWM

进入公司的第一个任务是做软启动,就是让电机慢慢转起来。学过单片机的可能马上就能想到,这不就是单片机吗!然后我就屁颠屁颠的去看这款富士通636H的数据手册了。

PPG

手册上说636H芯片使用PPG输出PWM波。然后万事找百度,好像只有富士通的单片机有PPG。。。好在官方给出了说明。

The 8/16-bit PPG is an 8-bit reload timer module that uses pulse output control based on timer operation to perform PPG output. The 8/16-bit PPG also operates in cascade (8 bits + 8 bits) as 16-bit PPG.

用我蹩脚的英语翻译一下大概意思是,8位/ 16位PPG是一个8位重载定时器模块,它使用基于定时器操作的脉冲输出控制来执行PPG输出。 8位/ 16位PPG也以16位PPG级联(8位+ 8位)。

然后看他如何产生PWM,和一般产生PWM的方法是一样的!

PPG生成PWM波

寄存器配置

这款单片机一共有3个通道,6个输出,分别是PPG00、PPG01、PPG10、PPG11、PPG20、PPG21,下图显示了各个寄存器的功能。

各个寄存器功能

PPS寄存器用来配置PWM周期,PDS寄存器用来配置PWM的占空比,即占空比=PDS/PPS。PPGS和REVC的每一位都代表一个输出,即bit0表示PPG00,bit1表示PPG01,以此类推。当PPGS对应的位为1时启动该输出的计数,即开启PWM模式。REVC表示输出是否反相,对应位为1则该输出反相,否则不反相。

PC寄存器是最重要的寄存器。PCn1和PCn0的配置略有不同,毕竟PCn1是能成为16位PPG高位的存在。

下图是PCn1配置寄存器的各位功能,其中bit6和bit7无意义。

这里写图片描述

下图展示了PCn0的各个位的功能。

这里写图片描述

配置好这些寄存器就能输出PWM波了。

PC11 = 0x0b; PPS11 = 100; PDS11 = 20; REVC_REV11 = 0; PPGS_PEN11 = 1; 

不同配置对应的不同引脚

利用定时器产生PWM

虽然产生了PWM,用示波器看也没问题,但是!驱动不了电机!看了原理图,不知道是不是一段高电平,一段PWM所以无法驱动原因。可是板子都打好了,我又不能改引脚,怎么办。只能自己造PWM了啊。

其实自己造PWM很简单,就是使用定时器,在定时器中翻转点评就可以了,我写了两种方法。

第一种,定义一个短时间t的定时器,然后定义进入多少次定时器为一个周期。比如定义100次为一个周期,前20次输出高电平,后80次输出低电平,那么该PWM的周期就为100×t,占空比为20%。这种方法的优点是无需重复配置定时器,缺点是无法实现无级调节占空比。

第二种,进入定时器中断后输出高电平,然后配置定时器时间,改变下一次进入定时器中断的时间,下一次进入定时器中断后输出低电平,然后重新配置定时器时间。比如这一次进入定时器,先置高电平,然后配置定时器时间为20ms,下一次进入定时器中断后置低电平,然后配置80ms,这样就能产生一个周期为100ms,占空比为20%的PWM波了。这种方法的优点是能够实现无级调节占空比,缺点是每次都需要重新配置定时器,有些单片机在定时器运行过程中是无法更改定时器配置的。

经过测试,第一种方法能够完美实现软启动的要求,第二种方法会使灯先亮,然后变暗再缓缓变亮,分析原因可能是发光二极管导通电压比较大,而第一种方法一开始就输出比较大的占空比(5次中断为一周期,最低也有20%的占空比),所以没有这种现象。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176858.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:52
下一篇 2026年3月26日 下午8:52


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号