This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS:MSP430FR2633 PWM 输出

Guru**** 2589280 points
Other Parts Discussed in Thread: MSP430FR2633

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/754332/ccs-msp430fr2633-pwm-output

主题中讨论的其他器件:MSP430FR2633MSPWARE

工具/软件:Code Composer Studio

你(们)好

我是新用户、尝试使用 msp430fr2633 PWM 输出调节外部 LED 的配体、但它不起作用。

可能是我错误地配置寄存器。 请帮帮我。 以下是我的代码:  

#include //通用 MSP430器件包括
#include "driverlib.h" // MSPWare 驱动程序库
#include "captate.h" // CapTIvate 触控软件库
#include "CAPT_App.h" // CapTIvate 应用程序代码
#include "CAPT_BSP.h" // CapTIvate EVM 板级支持包



void main (void)
{

WDTCTL = WDTPW | WDTHOLD;
BSP_configureMCU ();
_ bis_SR_register (GIE);

//
启动 CapTIvate 应用
//
CAPT_AppStart ();

//
//背景循环
//
//// P2DIR = 0x02;




// PWM/引脚1.1/
TA0CTL = 0x0213;//ACLK、ID=1、U_MODE、INTERRUPT_ENABLE、中断挂起
TA0R = 0x0000;//计数器
TA0CCTL0= 0x0014的开始值;//无捕捉模式、比较模式、输出位模式、CCIE 禁用、输出:输出高
电平 TA0CCR0 = 0x00FF;






//

运行处理程序0 =//// 0。//
//在应用程序处理程序运行时设置 LED1,
//如果在
任何传感器上检测到接近,则设置 LED2。
//
LED1_ON;


if (CAPT_appHandler ()=true)
{
LED2_ON;


}
否则
{
LED2_OFF;

}
LED1_OFF;

//
//这是添加任何
//后台应用程序代码的好地方。
//
__no_operation ();

//
后台循环迭代结束
//如果没有剩余操作则进入睡眠
//
CAPT_appSleep ();

}//结束后台循环
}//结束 main () 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这些位具有名称、除其他外、这使其他位更易于为您提供帮助。 例如:
    > TA0CTL = 0x0213;//ACLK、ID = 1、U_MODE、INTERRUPT_ENABLE、中断挂起
    读数更好:
    > TA0CTL = tassel_2 | ID_0 | MC_1 | TAIE | TAIFG;//SMCLK/1、向上计数模式、INTERRUPT_ENABLE、中断挂起
    这表示您已经启用(甚至触发)了计时器的中断、但我看不到 ISR。 这将导致您的程序失败。 尝试:
    > TA0CTL = tassel_2 | ID_0 | MC_1 | TACLR;//SMCLK/1、向上计数模式[、清除]

    --------------------------------------

    >P1DIR = 0x02;//引脚1.1表示输出引脚 PWM

    P1.1可配置为输出 TA0.1信号、该信号由 TA0CCR1生成、例如

    > P1DIR |= BIT1;// P1.1作为 TA0.1
    >P1SEL1 |= BIT1;//按数据表(SLAS942B)列出表6-17
    > TA0CCR1 = 0xFF/2;//基于0xFF CCR0节拍的50%占空比
    > TA0CCTL1 = OUTMOD_7;//复位/设置:开头为高电平、结尾为低电平

    这应提供大约半亮度(50%)。 (请记住、视觉不是线性的。) 要使其更亮、请增加 CCR1。

    [编辑:添加了补救措施]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速应答和位配置的名称:)。 我复制了您的代码、将其粘贴到我的程序中、但它不起作用。 可能是引脚1.1不能用于生成 PWM 输出信号。 但我使用 pin2.4进行了尝试、但没有成功。 我看到了一点、LED 不会变成亮度。 我将 OUTMOD_7更改为 OUTMOD_0、并再次尝试、但结果相同。

    我想得到的是 LED 亮度的线性调节。 下面是我与您的 Idees 一起编写的代码:

    #include //通用 MSP430器件包括
    #include "driverlib.h"// MSPWare 驱动程序库
    #include "captate.h"// CapTIvate 触控软件库
    #include "CAPT_App.h"// CapTIvate 应用程序代码
    #include "CAPT_BSP.h"// CapTIvate EVM 板级支持包

    //void timer_init();

    void main (void)

    //
    //初始化 MCU
    // bsp_configureMCU()设置器件 IO 和计时
    //全局中断使能被设置为允许外设
    //唤醒 MCU。
    //
    WDTCTL = WDTPW | WDTHOLD;
    bsp_configureMCU();
    _bis_SR_register (GIE);

    //
    //启动 CapTIvate 应用程序
    //
    CAPT_AppStart();

    //
    //后台循环

    ///PWM 输出
    // P1DIR = 0x02;引脚1.1表示输出引脚 PWM

    //P1.1可配置为输出 TA0.1信号、该信号由 TA0CCR1生成、例如

    P1DIR |= BIT1;// P1.1作为 TA0.1
    P1SEL1 |= BIT1;//按数据表(SLAS942B)列出表6-17
    TA0CTL = tassel_2 | ID_0 | MC_1| TACLR;//SMCLK/1、向上计数模式[、清除]
    TA0CCR1 = 0xFF/2;//基于0xFF CCR0节拍的50%占空比
    TA0CCTL1 = OUTMOD_7;//复位/置位:开始时为高电平、结束时为低电平
    //

    //char A = 0;
    while (1)

    //
    //运行 captate 应用程序处理程序。
    //在应用处理程序运行时设置 LED1,
    //并在检测到接近时设置 LED2
    //在任何传感器上。
    //

    LED1_ON;
    if (CAPT_appHandler ()=true)

    LED2_ON;


    其他

    LED2_OFF;


    LED1_OFF;

    //
    //这是一个很好的地方,可以添加任何内容
    //后台应用程序代码。
    //
    __no_operation();

    //
    //后台循环迭代结束
    //如果没有剩余的操作,则进入睡眠状态
    //
    CAPT_appSleep ();

    }//结束后台循环
    }//结束 main()

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您将这些内容落在后面(我稍微编辑了它们)
    > TA0CCTL0=0; //没有特别的,只需计数
    > TA0CCR0 = 0x00FF;//结束值
    向上计数模式计数到 CCR0、因此如果它=0、它的计数不会很远。
    --------------------
    我应该说的是、我对 CAPT_xxx 函数不了解太多。 他们可能正在使用 TA0执行某些操作、但请先尝试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Bruce

    我试过它,它很有帮助。 谢谢。 现在、我可以看到 LED 在闪烁。

    现在,有人可以提高线性亮度。 我使用中断服务例程功能并启用中断尝试了它。 但它不起作用。 代码如下所示:


    #include //通用 MSP430器件包括
    #include "driverlib.h"// MSPWare 驱动程序库
    #include "captate.h"// CapTIvate 触控软件库
    #include "CAPT_App.h"// CapTIvate 应用程序代码
    #include "CAPT_BSP.h"// CapTIvate EVM 板级支持包

    char dutycycle=0;
    int i=0;
    void main (void)

    //
    //初始化 MCU
    // bsp_configureMCU()设置器件 IO 和计时
    //全局中断使能被设置为允许外设
    //唤醒 MCU。
    //
    WDTCTL = WDTPW | WDTHOLD;
    bsp_configureMCU();
    _bis_SR_register (GIE);

    //
    //启动 CapTIvate 应用程序
    //
    CAPT_AppStart();

    P1DIR |= BIT1;// P1.1作为 TA0.1
    P1SEL1 |= BIT1;//  
    TA0CTL = tassel_2 | ID_0 | MC_1|TAIE;//SMCLK/1,向上计数模式,中断使能
    TA0CCR0 = 0;
    TA0CCTL1 = CAP | OUTMOD_1 | CCIE;//捕获模式、置1、捕获/比较中断使能

    while (1)

    LED1_ON;

    if (CAPT_appHandler ()=true)

    LED2_ON;


    其他

    LED2_OFF;


    LED1_OFF;

    __no_operation();

    CAPT_appSleep ();


    }//结束后台循环
    }//结束 main()

    _interrupt void Timer0_A_SIR (void)

    {if (dutycycle<800)


    dutycycle+= 100;
    TA0CCR0 += 100;//增加亮度


    其他

    dutycycle-= 10;// toggle = true;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正如我说过的、
    >要使其更亮、请增大[TA0]CCR1。

    请勿更改 CCR0。 在某些情况下、它可能会影响亮度、但这是一种幻觉。 返回到以前的状态、只更改 TA0CCR1。 例如、您可以尝试在(TIMER0_A0_Vector) ISR 中将其升高和降低1。

    我建议您查看示例套件(SLAC700C、"产品"页面上的"工具和软件"选项卡)。 msp430fr243x_ta0_16.c 显示了如何设置 PWM。 msp430fr243x_ta0_02.c 显示了如何使用 ISR。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    非常感谢你的帮助。 它工作正常。 我只是增加 CCR1、它不起作用。

    问题是项目配置。 我使用 Desing Center 设计组件(滑块、按钮)、概括代码源并将其导入 Code Composer Studio。

    首先、我将通信接口微控制 器配置为 BULK_I2C、这就是它不工作的原因。

    现在、我使用 UART 通信接口设计了同一个项目、一切都正常。  

    hier 是我的计时器配置:

    //设置计时器
    TA0CCTL1 = TA0CCR1的 OUTMOD_7;//reset/set 模式
    TA0CCR1 = 50;// 50%亮度

    TA0CCR0 = 100;//计数器的结束值、定时器的周期

    TA0CTL = tassel_2 + MC_1 + TACLR;// SMLCK 时钟(默认= 1MHz)、向上计数模式、清除 TA0R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这里是我使用滑块和 msp430fr2633调节 LED 亮度的所有代码源

    #include //通用 MSP430器件包括
    
    #include "driverlib.h"// MSPWare 驱动程序库
    #include "captate.h"// CapTIvate 触控软件库
    #include "CAPT_App.h"// CapTIvate 应用代码
    #include "CAPT_BSP.h"// CapTIvate EVM 板级支持包
    
    
    void update_brightness (uint16_t val);
    uint16_t position= 0xFFFF;//滑块
    
    void main (void)上的位置
    {
    //
    初始化 MCU
    // bsp_configureMCU ()设置器件 IO 和计时
    //设置全局中断使能以允许外设
    //唤醒 MCU。
    //
    WDTCTL = WDTPW | WDTHOLD;
    bsp_configureMCU ();
    _ bis_SR_register (GIE);
    
    //
    //启动 CapTIvate 应用
    //
    CAPT_AppStart ();
    
    //
    背景循环
    //
    P1DIR |= BIT1;//配置为输出 pin1.1
    P1SEL1;
    
    
    //运行 bind1 (bind1);// bapture/ bate handler (1);// bind1);// bind/ bind1 (bind1)
    
    ;// bind/ bind1 (bind1) bate/ bind1) bind/ bate/ bind1 (bind1) bind1;//
    //在应用程序处理程序运行时设置 LED1,
    //如果在
    任何传感器上检测到接近,则设置 LED2。
    //
    LED1_ON;
    if (CAPT_appHandler ()=true)
    {
    Position = CAPT_getSensorPosition (&sliderSensor);//获取滑块上触控区域的位置,如果不触控,则该位置等于 FFFF;
    //此函数在 Project 文件夹中的文件 CAT_Slider.h
    中定义 if (sliderSensor.borSensorelse
    
    
    
    
    );{/ toucheld2/取消亮度更新};//
    
    LED1_OFF;
    
    //
    //这是一个添加任何
    //后台应用程序代码的好地方。
    //
    __no_operation();
    
    //
    后台循环迭代结束
    //如果没有剩余操作,则进入休眠
    //
    CAPT_appSleep ();
    
    } //结束背景循环
    }//结束 main ()
    
    void update_brightness (uint16_t val)//用于增加 TA0CCR1并更改亮度
    {
    TA0CCTL1 |= MC_0;//清除模式控制以停止计时器 beval 以更新计时器参数
    
    //设置计时器
    TA0CCTR1 = OUTMOD_7;//reset/set = TA0CCR1
    =新值
    / TA0CCR1 = TA0CCR1 计数器的结束值、定时器
    TA0CTL 的周期= tassel_2 + MC_1 + TACLR;// SMLCK 时钟(默认值= 1MHz)、向上计数模式、清除 TA0R
    
    }
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢大家的帮助
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、Capt_xxx 函数似乎(在某些模式下)在您的背面使用 TA0。 抱歉。

    我很高兴您能正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christian:

    您的问题得到解决听起来不错。 如有任何疑问、请随时返回 E2E。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    当然:)。 谢谢你。