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.

[参考译文] MSP430G2131:两个问题:1:什么是"器件型号"?? ; 2:要更改哪行代码以更改睡眠时间?

Guru**** 1826200 points
Other Parts Discussed in Thread: MSP-EXP430G2ET, MSP430G2553
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1429217/msp430g2131-two-questions-1-what-is-the-part-number-2-what-line-of-code-to-change-to-change-sleep-time

器件型号:MSP430G2131
主题中讨论的其他器件:MSP430G2553、MSP-EXP430G2ET

工具与软件:

Q1: 我有一个 MSP-EXP-430G2ET 开发套件。 我在文档或评估板上找不到任何内容来告诉我"器件型号"是什么、但需要在此提问。 我猜到了此问题的器件型号! "部件号"是什么-或者在哪里可以找到"部件号"??

问题2:我有一个示例代码正在工作、但我很难理解代码中正在发生什么、以及为了延长"休眠时间"、我需要更改什么。 代码是:/home/guest/ide/default/msp430g2xx3_lpm3_vlo.c/msp430g2xx3_lpm3_vlo.c

我想将"睡眠时间"更改为较长的值-我们假设它的长度是原来的两倍。 我只能猜测必须更改的代码是"__bis_SR_register (LPM3_bits + GIE);"行、但甚至无法猜测要将其更改为什么值。 有人能告诉我这是怎么做到的吗?

#include

int main (void)
BCSCTL1 |= Tiva_1;// ACLK/2
BCSCTL3 |= LFXT1S_2;// ACLK = VLO
WDTCTL = WDT_ADLY_1000;//间隔计时器
IE1 |= WDTIE;//启用 WDT 中断
P1DIR = 0xFF//所有 P1.x 输出
P1OUT = 0//所有 P1.x 复位
P2DIR = 0xFF//所有 P2.x 输出
P2OUT = 0//全部 P2.x 复位
P3DIR = 0xFF//所有 P3.x 输出
P3OUT = 0//所有 P3.x 复位
while (1)
内部 I;
P1OUT |= 0x01//将 P1.0 LED 设置为开启
对于(i = 8000;i>0;i -);//延迟
P1OUT 并且=~0x01//将 P1.0 LED 复位
__bis_SR_register (LPM3_bits + GIE);//进入 LPM3
}
}

#if defined (__TI_Compiler_version__)|| defined (__IAR_SYSTEMS_ICC__)
#pragma VECTOR=WDT_VECTOR
__interrupt void watchdog_timer (void)
#elif defined (_GNUC__)
void __attribute__(((interrupt (WDT_vector))) watchdog_timer (void)
#else
错误编译器不受支持!
#endif
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);//将 LPM3位从0 (SR)清除
}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Q1: MSP-EXP-430G2ET 用于评估 MSP430G2553、因此器件型号应为 MSP430G2553  

    问题2:  

    [报价用户 id="45404040" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1429217/msp430g2131-two-questions-1-what-is-the-part-number-2-what-line-of-code-to-change-to-change-sleep-time '__bis_SR_register (LPM3_BITS + GIE);'、

    此代码用于进入低功耗模式、睡眠时间是指看门狗计时器将器件从低功耗模式唤醒。 因此、您可以更改看门狗计时器中断时间以更改睡眠时间、从而可以更改下面的代码

    [报价 userid="45404040" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1429217/msp430g2131-two-questions-1-what-is-the-part-number-2-what-line-of-code-to-change-to-change-sleep-time ">WDTCTL = WDT_ADLY_1000;//间隔定时器[/QUOT]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用看门狗时钟分频器的可用选择非常有限、本示例使用最长的间隔。 您可以更改 DIVA、但这最多可以使您的间隔变为原来的四倍。

    对于更长的延迟、必须在中断服务例程中放置一个计数器。 每次递增、并在达到所需的计数数量后唤醒。

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

    "我怎么知道?"

    下面是我做的更改:

    // WDTCTL = WDT_ADLY_1000; // Interval timer
    WDTCTL = WDT_ADLY_2000; // (modified) Interval timer
    但我遇到了编译错误:
    [5]>> Compilation failure
    [6]subdir_rules.mk:7: recipe for target 'msp430g2xx3_lpm3_vlo.obj' failed
    [7]"../msp430g2xx3_lpm3_vlo.c", line 77: error #20: identifier "WDT_ADLY_2000" is undefined
    [8]"../msp430g2xx3_lpm3_vlo.c", line 90: remark #1527-D: (ULP 2.1) Detected SW delay loop using empty loop. Recommend using a timer module instead
    [9]"../msp430g2xx3_lpm3_vlo.c", line 90: remark #1527-D: (ULP 2.1) Detected SW delay loop using empty loop. Recommend using a timer module instead
    [10]1 error detected in the compilation of "../msp430g2xx3_lpm3_vlo.c".
    [11]gmake: *** [msp430g2xx3_lpm3_vlo.obj] Error 1
    [12]gmake: Target 'all' not remade because of errors.
    我猜这是一个常数-可能只有特定的定义值??? 如果是、在哪里列出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、

    谢谢-我最终在msp430G2553.h""文件中找到了"DIVA"定义(在这里很难找到)。

    那么、我看到4倍是什么意思。

    我没有看到的是中断服务例程... 它的名称是什么?在哪里可以找到它?

    另一个问题是:您认为添加 RTC 或者其他一些外部唤醒源会更简单吗?

    是否有外部唤醒源示例?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有看到的是中断服务例程... 它的名称是什么?在哪里可以找到它? [报价]

    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    
    #pragma vector=WDT_VECTOR
    
    __interrupt void watchdog_timer (void)
    
    #elif defined(__GNUC__)
    
    void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
    
    #else
    
    #error Compiler not supported!
    
    #endif
    
    {
    
     __bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
    
    }

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

    David -有一些问题与"云"工作室/开发环境... 似乎调试器一直无法初始化。 我不知道问题是什么-一旦我把这个弄直了,我会回答。

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

    我不知道发生了什么... 删除初始工程并重新加载后:

    1.它构建良好

    2.尝试启动调试器会出现一条消息:"我无法复制、但如下所示:"调试会话初始化失败。 有关详细信息、请参见 控制台"、但控制台为空

    3.太令人沮丧了…… 有人知道这有什么问题吗? 我仍然可以编译和调试 BlinkLED 示例。

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

    请下载 安装最新版本的 EclipseRegisteredCCS

    并测试工程、 如果您有问题、可以在此处发送工程。

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

    Gary、

    我感谢您的努力帮助-真的我做到了。 但是、您推荐我安装的"Eclipse CCS"似乎存在问题-这与我之前遇到的问题相同、也是我依赖这款"Cloud CCS"解决方案的原因-现在似乎也崩溃了!

    问题如下:开始安装后、我看到以下屏幕显示:

    请注意、"不受支持的板"列表中显示以下行: MSP430G2 LaunchPad [MSP-EXP430G2]

    这是我的电路板-至少有 AFAICT。 我最近刚买了这个开发板、被标记为"MSP-EXP430G2ET"。 这显然是被列为"不受支持的板"的板; 如果我错了、请告诉我。 但是、我认为完成大型的复杂软件安装只以另一个失败的开发工具结束是没有意义的。

    很抱歉-我似乎无法上传安装程序屏幕截图。 我不知道问题是什么,但我厌倦了战斗你的网站。

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

    Gary:这是屏幕截图

    最后可以上传屏幕截图!

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

    好的、我不使用 macOS、似乎你可以在 Windows PC 上尝试它、或者你可以尝试 CCS theia。

    或者、您也可以尝试我们的新产品:MSPM0系列器件、它们具有比 MSP430G2器件更多更好的外设、且价格更低。https://www.ti.com/lit/an/slaae74a/slaae74a.pdf 

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

    David、

    对于这样的进度很抱歉、但我被"CloudCCS"问题所打断、并且对我的 Mac 上的 CCS 安装提出了问题。

    无论如何:我已经为这个设置做了一些努力,但就在今晚早些时候,我设法把所有的东西加载到 CCS (12.8 ):

    • msp430g2xx3_lpm3_VLO.c
    • msp430g2553.h

    然后让示例再次运行!

    我已经修改了 C 源代码、将 Tiva_1替换为 Tiva_3、现在运行的延迟大约为24秒。 但我需要更多的延迟-至少30分钟,最好是一个小时。 您曾提到 ISR 中的计数器;您能就如何构建该计数器给出一些提示吗?

    我想我应该将此发布为新问题吗??  请提供建议。

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

    如果您需要编写一个简单循环的帮助...

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

    将问题标记为解决后、您应该开始一个新问题。

    但为了查看一些计时器中断示例、 通常、您可以设置每秒中断并使计数递增、当计数达到秒数时、您需要设置易失性标志并重置计数。

    在主例程中、您将持续测试此标志、当其状态改变时、您执行操作、然后重置此标志。

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

    我不是瘦大卫,我相信你也不是... 所以 K-My-A:)

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

    Keith、谢谢-这很有帮助!  如果我有问题、我将尝试并发布新问题。