ZHCABH5B December   2011  – February 2022 MSP430G2112 , MSP430G2152 , MSP430G2212 , MSP430G2252 , MSP430G2312 , MSP430G2352 , MSP430G2412 , MSP430G2452

 

  1.   摘要
  2.   商标
  3. 1典型单时基方法
  4. 2多时基方法
  5. 3在定制应用中实现多时基方法
    1. 3.1 计时器时钟源选择
    2. 3.2 周期和频率计算
    3. 3.3 占空比计算
  6. 4示例代码
    1. 4.1 方法
      1. 4.1.1 用于生成多个频率的 ISR
      2. 4.1.2 用于生成多个频率和占空比(PWM)的 ISR
    2. 4.2 包含的代码示例
  7. 5多时基方法的限制
    1. 5.1 ISR 开销
    2. 5.2 最大输出频率与信号数量
    3. 5.3 功耗
  8. 6参考文献
  9. 7修订历史记录

方法

除了设置时钟、引脚和其他标准 MSP430 初始化外,还需要针对多时基方法实现两个主要代码段:计时器初始化和计时器 ISR。不管用户尝试实现的频率如何,计时器初始化都基本相同。以下代码显示了 multi_freq_g2452_example.c 文件中的计时器初始化:

  TACCTL0 = OUTMOD_4 + CCIE;                // CCR0 toggle, interrupt enabled
  TACCTL1 = OUTMOD_4 + CCIE;                // CCR1 toggle, interrupt enabled
  TACCTL2 = OUTMOD_4 + CCIE;                // CCR2 toggle, interrupt enabled
  TACTL = TASSEL_2 +  MC_2 + TAIE;          // SMCLK, Contmode, int enabled

根据具体的应用,此初始化过程中唯一要做出的更改是使用的 TxCCTLx 寄存器数量(应根据所需的输出频率数量来设置)和 TxCTL 寄存器中的 TxSSELx 位(应根据所需的计时器时钟源来设置)。

如果除了多个频率外还需要多个占空比,那么还需要对 TxCCTLx 寄存器进行一项设置:必须设置 CCISx 位。这是因为用于生成多个频率和占空比的 ISR(请参阅Topic Link Label4.1.2)使用 CCI 位来读回引脚上的信号,从而确定输出当前处于高电平还是低电平阶段。CCISx 位选择哪个信号或引脚会连接到该 TxCCTLx 寄存器对应的内部 CCI 信号 – 连接到 CCIxA 或 CCIxB 的任一引脚或信号。对于此实现,用户必须选择用于输出 PWM 的 GPIO 引脚所对应的 CCISx 设置。有关器件上每个计时器模块的计时器信号连接信息,请参阅具体器件的数据表。以下代码显示了 multi_freq_pwm_g2452_example.c 文件中的计时器初始化:

  TACCTL0 = CCIS_0 + OUTMOD_4 + CCIE;       // CCR0 toggle, interrupt enabled, CCI0A input
  TACCTL1 = CCIS_0 + OUTMOD_4 + CCIE;       // CCR1 toggle, interrupt enabled, CCI1A input
  TACCTL2 = CCIS_0 + OUTMOD_4 + CCIE;       // CCR2 toggle, interrupt enabled, CCI2A input
  TACTL = TASSEL_2 +  MC_2 + TAIE;          // SMCLK, Contmode, int enabled