登录站点

用户名

密码

PWM工作模式及中段

已有 911 次阅读  2009-10-14 10:16

8PWM工作模式

 

SPMC65系列单片机中,Timer 024属于第一种(类型I)——8PWM。当TxFS[-20]设置为111后,Timer X就工作在8PWM模式下,相应的引脚(例如,定时/计数器0对应PB2)自动成为PWM输出引脚。PWM周期在寄存器P_TMRx_PWMPeriod中设置,占空比在寄存器P_TMRx_PWMDuty中设置。在8PWM模式下,使能8PWM功能后用户必须首先写寄存器P_TMRx_PWMDuty,然后再写寄存器P_TMRx_PWMPeriod。时钟的分频系数由TxPsS[20]位选择。当PwM使能后,计数器载入计数初值(P_TMRx_PwMPeriod的值),开始计数,同时,相应的引脚输出低电平。在计数过程中,计数值不断地和占空比值(P_TMRx_PwMDuty的值)进行比较.相等时,PWM引脚输出电平翻转,为高电平。计数器继续计数,直到溢出,此时一个周期的方波输出完成。接着,PWM引脚再次翻转,输出低电平,计数器重新载入计数初值开始计数,产生下一个PWM输出,依次不断循环。

 

PWM周期和占空比计算如下述。

 

如果    PRDREG=周期值寄存器数值

 

DUTYREG=占空比值寄存器数值

 

T_TMRx=Timer x预分频后计数时钟周期  (x=024)

 

那么    PWM周期=[$100HPRDREG]*T_TMRx

 

PWM占空比=I$FFHDuTYREG]*T_TMRx

 

如图515所示为8PWM模式原理框图。图5168PWM波输出的操作时序。
 



12PWM工作模式

 

SPMC65系列单片机中.Timer 13属于第二种(类型Ⅱ)——12PWM。当TxFS[20]设置为111后,Timer X就成为12PWM发生器,相应的引脚(如:Timer 1对应PB3)自动成为12PWM输出引脚。PWM周期在寄存器P_TMRx_PWMPeriodP_TMRxDuty-Period[30]中设置;占空比在寄存器P_TMRx_DutyPeriod [74]P_TMRx_PWMDuty.中设置;时钟的分频系数由TxPSS[20]位选择。当PWM使能后,计数器载入计数初值(P_TMRx_PWMPeriod的值),开始计数,同时,相应的引脚输出低电平。在计数过程中,计数值不断的和占空比值{P_TMRx_DutyPeriod [74]P_TMRx_PWMDuty[70]}进行比较。相等时,PWM引脚输出电平翻转,为高电平。计数器继续计数,直到溢出,此时一个周期的方波输出完成。接着,PWM引脚再次翻转,输出低电平,计数器重新载入计数初值开始计数,产生下一个PWM输出.依次不断循环。

 

一般8CPU,总线宽度为8位,通常无法直接访问16位的数据。因此,在12PWM模式下,需要先写入高字节寄存器P_TMRx_DutyPeriod(MSB byte)并被缓冲器自动保存,然后再写入低字节P_TMRx_PWMPeriod(周期)P_TMRx_PWMDuty(占空比),直到12位数据全部写入,缓冲器的值才会直正载人到寄存器当中,这样缓冲器中的高字节和低字节将会同时载入定时/计数器x(x=13)中去。

 

如图517所示为12PWM模式原理框图。图51812PWM波输出的操作时序图。




 

PWM周期和占空比计算公式:

 

    如果

        PRDREG={P_TMRx_DuyPeriod [30]P_TMRX_PwMPeriod[7O])

        DUTYREG={P_TMRx_DuyPeriod [74]P_TMRx_PWMDuy[70]}

        T_TMRx=Timer x预分频后计数时钟周期(x=13)

 

    那么

        PWM PERIOD=[$1000H-PRDREG]*T_TMRx

PWM DUTY=[$FFFH-DUTYREG]*T_TMRx




16PWM工作模式

 

SPMC65系列单片机中,Timer 5属于第三种(类型Ⅲ)——16PWM。当T5FC [20]设置为111后,Timer 5就成为16PWM发生器,相应的引脚PD7自动成为16PWM输出引脚。PWM周期在寄存器P_TMR5_PWMPeriodLO($23)P_TMR5_PwMPeriodHi($24)中设置;占空比在寄存器P_TMR5_PWMDutyLo($25)P_TMR5_PWMDutyHi($5F)中设置;时钟的分频系数由TSPSS[20]位选择。当PWM使能后,计数器载入计数初值{P_TMR5_PwMPeriodHiP_TMR5_PWMPeriodLO},开始计数。同时,引脚PD7输出低电平。在计数过程中,计数值不断的和占空比值{P_TMR5_PWMDutyHiP_TMR5_PWM_DutyLo}进行比较,相等时,PWM引脚输出电平翻转,为高电平。计数器继续计数,直到溢出,此时一个周期的方波输出完成。接着,PWM引脚再次翻转,输出低电平,计数器重新载入计数初值开始计数,产生下一个PWM输出,依次不断循环。

 

一般8CPU,总线宽度为8位,通常无法直接访问16位的数据。因此,在16PWM模式下,周期值寄存器和占空比值寄存器也分别占用了高字节寄存器(MSB字节)和低字节寄存器(LSB字节);在设置周期值寄存器和占空比值寄存器时,也需要按照先写高字节寄存,然后再写低字节寄存器的顺序。

 

如图519所示为16PWM输出原理框图。而Timer 5PWM模式操作时序与其他PWM模式类似,具体可以参考前面有812PWM模式的介绍。




 

PWM周期和占空比计算公式:

 

    如果

            PRDREG={P_TMR5_PWMPeriodHiP_TMR5_PWMPeriodLo}

            DUTYREG={P_TMR5PWMDutyHiP_TMR5_PWMDutyLo}

T_TMR5_Timer5预分频后计数时钟周期

 

    那么

        PWM周期=[$10000HPRDREG]*T_TMR5

        PWM占空比=[$FFFFDUTYREG]*T_TMR5




PWM中断

 

PWM操作相关的中断有:Timer 0溢出中断、Timer 1溢出中断、Timer 2溢出中断、Timer 3溢出中断、Timer 4溢出中断和Timer 5溢出中断。

 

设置PWM中断的步骤如下。

 

    ①执行指令“SEI”关闭总的中断开关。

 

②决定采用8位还是12位或是16位的PWM方式并选择一个合适的Timer

 

③设置与PWM操作相关寄存器。

 

④在寄存器P_INT_Ctrll($OF)中使能该Timer溢出中断(PWM中断)

 

⑤执行指令“CLI”打开总的中断开关。

 

⑥设置完毕.等待PWM中断产生。

 

    SPMC65系列单片机的PWM中断应用可参考对应定时/计数器的中断应用。


上一篇: 定时器x(定时器模式)的应用实例 下一篇: 模拟开关

分享 举报