1、8、通过编程可以实现希望的时钟周期。9、具有遇到紧急情况关闭程序的功能。10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。HCS12微控制器系列教程-第二讲:PWM 寄存器简介1、PWM启动寄存器PWMEPWME 寄存器每一位如图1所示: 复位默认值:0000 0000B图1 PWME 寄存器每一个PWM 的输出通道都有一个使能位PWMEx 。它相当于一个开关,用来启动和关闭相应通道的 PWM 波形输出。当任意的PWMEx 位置1,则相关的PWM输出通道就立刻可用。用法: PWME7=1 - 通道7 可对外输出波形PWME7=0 - 通道7 不能对外输出波形 注意:在通道使能后所输
2、出的第一个波形可能是不规则的。当输出通道工作在串联模式时(PWMCTL寄存器中的CONxx 置1),那么)使能相应的16位PWM 输出通道是由PWMEx的高位控制的,例如 :设置 PWMCTL_CON01 = 1,通道0、1级联,形成一个16位 PWM 通道,由通道 1 的使能位控制 PWM 的输出。2、PWM时钟选择寄存器PWMCLKPWMCLK寄存器每一位如图3所示:图2 PWMCLK 寄存器S12的PWM 共有四个时钟源,每一个PWM 输出通道都有两个时钟可供选择(ClockA、ClockSA 或ClockB、ClockSB)。其中0、1、4、5通道可选用ClockA和ClockSA,2
3、、3、6、7通道可选用ClockB、ClockSB通道。该寄存器用来实现几个通道时钟源的选择。 PCLK0 =1 - 通道0(PTP0)的时钟源设为ClockSAPCLK2 =0 - 通道2(PTP2)的时钟源设为ClockBHCS12微控制器系列教程-第三讲:1、PWM预分频寄存器PWMPRCLKPWMPRCLK寄存器每一位如图3所示:图3 PWMPRCLK 寄存器PWMPRCLK寄存器包括ClockA预分频和ClockB预分频的控制位。ClockA、ClockB的值为总线时钟的1/2n (0n7),具体设置参照图4和图5图4ClockA 预分频设置图5ClockB预分频设置PCKB0PCK
4、B2 是对ClockB进行预分频。PCKA0PCKA2是对ClockA进行预分频。2、PWM分频寄存器PWMSCLA、PWMSCLBPWMSCLA寄存器每一位如图6所示:图6 PWMSCLA寄存器ClockSA是通过对PWMSCLA寄存器的设置来对ClockA 进行分频而产生的。其计算公式为:Clock SA=ClockA/(2*PWMSCLA)PWMSCLB 寄存器与PWMSCLA 寄存器相似,ClockSB 就是通过对PWMSCLB寄存器的设置来对ClockB 进行分频而产生的。Clock SB=Clock B /(2*PWMSCLB)HCS12微控制器系列教程-第四讲:1、PWM极性选择
5、寄存器PWMPOLPWMPOL 寄存器每一位如图7所示:图7 PWMPOL 寄存器该寄存器是07通道PWM输出起始极性控制位,用来设置PWM输出的起始电平。PWMPOL_PPOL0=1-通道 0 在周期开始时输出为高电平,当计数器等于占空比寄存器的值时,输出为低电平。对外输出波形先是高电平然后再变为低电平。2、PWM波形对齐寄存器PWMCAEPWMCAE寄存器每一位如图8 所示:图8PWMCAE 寄存器PWMCAE寄存器包含8个控制位来对每个PWM通道设置左对齐输出或中心对齐输出。用法: PWMCAE_CAE0 =1 - 通道0 中心对齐输出 PWMCAE_CAE7 =0 - 通道7 左对齐输
6、出只有输出通道被关闭后才能对其进行设置,即通道被激活后不能对其进行设置。HCS12微控制器系列教程-第五讲:1、PWM控制寄存器PWMCTLPWMCTL寄存器每一位如图9 所示:图9PWMCTL 寄存器该控制寄存器设定通道的级联和两种工作模式:等待模式和冻结模式。这两种模式如图10和图11所示。图10 等待模式图11 冻结模式只有当相应的通道关闭后,才能改变 这些控制字。PWMCTLCON67=1 - 通道6、7 级联成一个16位的PWM通道。此时只有7 通道的控制字起作用,原通道7的使能位、PWM输出极性选择位、时钟选择控制位以及对齐方式选择位用来设置级联后的PWM输出特性PWMCTLCON
7、67=0 - 通道6,7 通道不级联CON45、CON23、CON01的用法同CON67相似。设置此控制字的意义在于扩大了PWM 对外输出脉冲的频率范围。PSWAI=1- MCU 一旦处于等待状态,就会停止时钟的输入。这样就不会因时钟在空操作而费电;当它置为0,则MCU就是处于等待状态,也允许时钟的输入。PFRZ=1- MCU 一旦处于冻结状态,就会停止计数器工作。HCS12微控制器系列教程-第六讲:1、PWM通道计数寄存器 PWMCNTxPWMCNTx寄存器共有8个,每一个通道都有一个8位PWM加/减双向计数器,通道级联后可变成16位PWM加/减双向计数器。下面以PWMCNT0为例对PWMC
8、NTx 寄存器进行介绍。PWMCNT0寄存器如图12所示:图12 PWMCNT0 寄存器 计数器以所选时钟源的频率运行。计数器在任何时候都可以被读,而不影响计数,也不影响对PWM 通道的操作。任何值写入PWMCNT0寄存器都会导致计数器复位置0,且其计数方向会 被设置为向上计数,并且会立刻从缓冲器载入任务和周期值,并会根据翻转极性的设置来改变输出。当计数器达到计数值后,会自动清零。只有当通道使能后,计数器才开始计数。2、PWM通道周期寄存器PWMPERxPWMPERx 寄存器共有8 个,每一个通道都有一个这样的周期寄存器。这个 寄存器的值就决定了相关PWM 通道的周期。每一个通道的周期寄存器都
9、是双缓 冲的,因此如果当通道使能后,改变他们的值,将不会发生任何作用,除非当下列情况之一发生:*有效的周期结束。*对计数器进行写操作(计数器复位)*通道不可用(PWMEx = 0)这样就会使PWM 输出波形要么是新波形要么是旧波形,并不会在两者之间 进行交替变换。如果通道不可用,那么对周期寄存器进行写操作,将会直接导致 周期寄存器同缓冲器一起闭锁。图13所示的是PWMPER0 寄存器:图13 PWMPER0 寄存器3、PWM通道占空比寄存器PWMDTYxPWMDTYx寄存器也有8个,每一个通道都有一个这样的占空比常数寄存 器。这个寄存器的值就决定了相关PWM 通道输出波形的占空比。每一个通道的
10、 占空比寄存器都是双缓冲的,因此如果当通道被激活后,改变他们的值将不会发生任何作用,除非当下列情况之一发生:如果通道没有被激活,那么对占空比常数寄存器进行写操作,将会直接导致周期寄存器同缓冲器一起闭锁。当计数值与占空比常数PWMDTY 相等时,则比较输出器有效,这时就会将触发器置位,然后PWMCNT 继续计数,当计数值与周期常数PWMPER相等时,比较器输出有效,将触发器复位,同时也使PWMCNT复位,结束一个输出周期。HCS12微控制器系列教程-第七讲:PWM 工作原理 S12微控制器PWM模块是由独立运行的8位脉冲计数器PWMCNT、两个比较寄存器PWMPER和PWMDTY组成。1、左对齐
11、方式在该方式下,脉冲计数器为循环递增计数,计数初值为0 。当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始一个输出周期。当计数值与占空比常数寄存器PWMDTY相等时,比较器1输出有效,将触发器置位,而PWMCNT继续计数;当计数值与周期常数寄存器PWMPER相等时,比较器2输出有效,将触发器复位,同时PWMCNT也复位,结束一个输出周期。原理参照图14:图14 PWM左对齐方式2、中心对齐方式在该方式下,脉冲计数器为双向计数,计数初值为0 。当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始输出一个周期。当计数器与占空比常数寄存器PWMDTY相等时,比较器1输
12、出有效,触发器翻转,而PWMCNT继续计数,当计数值与周期常数PWMPER相等时,比较器2输出有效,此时改变PWMCNT的计数方向,使其递解计数;当PWMCNT再次与PWMDTY相等时,比较器1再一次输出有效,使触发器再次翻转,而PWMCNT继续递减计数,等待PWMCNT减回至0,完成一个输出周期。原理参照图15:图15 中心对齐方式3、周期计算方法左对齐方式:输出周期 = 通道周期 PWMPERx中心对齐方式: PWMPERx 24、脉宽计算方法占空比 = (PWMPERx - PWMDTYx) / PWMPERx 100%占空比 = PWMDTYx / PWMPERx HCS12微控制器系
13、列教程-第八讲:PWM 应用实例PWM初始化步骤总结1、禁止PWM PWME = 02、选择时钟 PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK3、选择极性 PWMPOL4、选择对齐方式 PWMCAE5、选择占空比和周期 PWMDTYx, PWMPERx6、使能PWM PWME = 1【例程1】程序描述:由通道PTP3口输出频率为1K,占空比为50%的方波程序如下:#include /* common defines and macros */mc9s12dg128.h /* derivative information */#pragma LINK_INFO DERIVATIVE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1