查看: 291|回复: 0
打印 上一主题 下一主题

【MSP430F149学习】20 定时器A之PWM波输出

[复制链接] qrcode

34

主题

36

帖子

109

积分

注册会员

Rank: 2

积分
109
楼主
跳转到指定楼层
发表于 2015-12-15 01:11 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


【MSP430F149学习】20 定时器A之PWM波输出 



准备工具:电脑;TS8900--MSP430F149开发板;1602液晶屏;USB线一根;杜邦线两根


开发环境:IAR EW for MSP430 V5.30



定时器A工作在增计数模式



      捕获/比较寄存器 T ACCR0 用作 TIMER_A 增计数模式的周期寄存器, 因为 T ACCR0 为 16 


为寄存器所以该模式适用于定时器。


      周期小于 65536 的连续计数情况。 计数器 T AR 可以增计数到 T ACCR0 的值,当计数值于


 T ACCR0 的值相等(或定时器值大于 T ACCR0 的值)时,定时器复位并从 0 开始重新计数。




       中断标志位的设置过程。当定时器的值等于 TACCR0 的值时,设置标志位 CCIFG0(捕获比较


中断标志)为 1,而当定时器从 TACCR0 计数到 0 时,设置标志位 TAIFG(定时器溢出标志)为 1。


计数过程中还可以通过改变 TACCR0 的值来重置计数周期。


当新周期大于旧周期时,定时器会直接增计数到新周期。


       当新周期小于旧周期时,改变 T ACCR0 时的定时器时钟相位会影响定时器响应新周期的情况。时钟


高时改变 T ACCR0 的值,则定时器会在下一个时钟周期上升沿返回到 0,如果时钟周期为低时改变


TACCR0 的值,则定时器接受新周期并在返回到 0 之前,继续增加一个时钟周期。


位定时器 A 模块在增计数模式下输出波形



  输出模式 0  输出模式:输出信号 OUTx 由每个捕获/比较模块的控制寄存器 T ACCTLx 中的 OUTx 

                                位定义,并在写入该寄存器  后立即更新,最终位 OUTx直通。


  输出模式 1  置位模式:输出信号在 T AR 等于 T ACCRx 时置位,并保持置位到定时器复位或选

                                    另一种输出模式为止。


  输出模式 2  PWM 翻转/复位模式:输出在 T AR 的值等于 T ACCRx 时翻转,当 TAR 的值等于

                                                     TACCR0 时复位

  输出模式 3  PWM 置位/复位模式:输出在 T AR 的值的等于 T ACCRx 时置位,当 T AR 的值等于

                                                    TACCR0 时复位。


  输出模式 4  翻转模式:输出电平在 T AR 的值等于 T ACCRx 时翻转,输出周期时定时器周期的 2 倍。


  输出模式 5  复位模式:输出在 T AR 的值等于 T ACCRx 时复位,并保持低电平知道选择另一种输出模式


  输出模式 6  PWM 翻转/置位模式:输出电平在 T AR 的值等于 T ACCRx 时翻转,当 T AR 值等于

                                                    TACCR0 时置位。


  输出模式 7  PWM 复位/置位模式:输出电平在 T AR 的值等于 T ACCRx 时复位,当 T AR 的值等于

                                                 TACCR0 时置位。


定时器A PWM 输出简单示例


             ACLK=TACLK=LFXT1=32768Hz,MCLK=SMCLK=DCOCLK=32×ACLK=1.048576MHz,利用 


TIMER_A 输出周期为 512/32768=15.625ms,占空比分别为 75%和 25%的 PWM 矩形波,用于驱动板


上两个LED,查看亮度情况。



TA1 TA2 输出管脚为:P1.2 P1.3

原理图部分



硬件连接图



程序代码


#include  

void main(void)
{
  
  
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF1OUT = 0XFF;
    P2DIR = 0XFF2OUT = 0XFF;
    P3DIR = 0XFF3OUT = 0XFF;
    P4DIR = 0XFF4OUT = 0XFF;
    P5DIR = 0XFF5OUT = 0XFF;
    P6DIR = 0XFF6OUT = 0XFF;
  
  WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗
  P1DIR |= 0x0C;                            // 配置P1.2和P1.3输出模式
  P1SEL |= 0x0C;                            // 选通P1.2和P1.3的复用功能TA1/2
  CCR0 = 512-1;                             // PWM 周期
  CCTL1 = OUTMOD_7;                         // 模式七 CCR1 复位/置位
  CCR1 = 384;                               //  CCR1 PWM 占空比
  CCTL2 = OUTMOD_7;                         // 模式七 CCR2 复位/置位
  CCR2 = 128;                               // CCR2 PWM 占空比
  TACTL = TASSEL_1 + MC_1;                  // 时钟源ACLK, 增计数模式

  _BIS_SR(LPM3_bits);                       // 进入低功耗模式3
}



下载运行效果




可以看到用占空比25%驱动的LED比占空比75%的LED亮这是由于LED是用灌电流驱动

  



【MSP430F149学习】汇总贴


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

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