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.

[参考译文] MSP430G2553:TimerA0正在运行时能否写入 TA0R?

Guru**** 2535780 points
Other Parts Discussed in Thread: MSP430G2553

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1016965/msp430g2553-can-i-write-to-ta0r-while-timera0-is-running

器件型号:MSP430G2553

您好!

你好。 我有一位客户正在使用 MSP430G2553。 我向他建议了几个链接,供他查询,但他对链接有另一个问题。 请查看下面客户的查询和我发送给他的链接。 非常感谢。

在写入或读取 TA0R 时、我是否需要停止计时器? 当我在更改 TA0R 值后重新启动计时器时、计时器是从该值开始还是从零开始? 每次更改定时器寄存器时、是否需要清除已启用中断的中断标志? 在更改任何定时器寄存器之前、我是否需要禁用中断?

e2e.ti.com/.../msp430g2553-timer-a0-issue-in-msp430

e2e.ti.com/.../msp430g2553-timer-a-difference-between-taie-in-taxctl-and-ccie-in-ta0cctl0-register-in-mode-control-1-up-to-ta0ccr0

e2e.ti.com/.../2529317

e2e.ti.com/.../msp430g2553-msp430g2553-timer0_a0-and-timer0_a1-triggerering-at-the-same-time

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/867731/msp430g2553-timera-instead-of-delay-function?tisearch=e2e-sitesearch&keymatch=MSP430G2553%252520TA0R#

此致、

Ray Vincent

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

    第一种方法很简单、因为快速 RTFM 会调出12.2.1中的注释、告诉您在修改计时器的操作之前停止计时器。

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

    尊敬的 David:

    你好。 请参阅以下内容、了解客户的另一个查询。 非常感谢。

    我的电流消耗有问题。 我正在使用基电能跟踪、我看到电流脉冲为3mA。 脉冲的长度为145us、间隔为50us 至200us、一个脉冲后跟一组四个脉冲。 我的代码大部分时间都处于休眠状态、并且每1/2秒通过一个非常短的 ISR 唤醒一次。 导致这些脉冲的原因是什么?

    此致、

    Ray Vincent

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

    似乎有多个 ISR。

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

    当我在更改 TA0R 值后重新启动计时器时、计时器是从该值开始还是从零开始? 如果您选择向上计数模式、是的。 您可以在调试模式下看到要进行双校验的寄存器值。

    每次更改定时器寄存器时、是否需要清除已启用中断的中断标志?  您无需清除中断标志、当它进入 ISR 时、它将自动清除。

    在更改任何定时器寄存器之前、我是否需要禁用中断?  这取决于您想要实现的目标。 如果您不希望在更改计时器寄存器时发生 ISR、 您可以禁用中断。 如果您更新 CC 寄存器、 它将在计数器计数到0时更新。

    解决功耗问题。 我建议您禁用某些软件功能、以检查根本原因是什么。

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

    您好、伊斯天、

    你好。 请参阅以下客户对您建议的回应。 非常感谢。

    "您无需清除中断标志、当它进入 ISR 时、它将自动清除"。 如果我在 ISR 外部更改计时器寄存器会怎样?

    我无法在 IAR IDE 中获得"时间线"功能来报告正确的电流。 当我的无线电芯片正在传输时、它正确报告了37mA (时间线显示了此值的2.5ms)、但在 Tx 之后、时间线显示了161ms 的27mA。 我使用钳位电流探头测量电流:37mA 持续3.9ms、3mA 持续1.4ms、然后是休眠电流。 此外、时间轴向 VCC 线上引入了脉冲。 有时、时间线未显示27mA、但它是不一致的。 脉冲可能会影响测量。 我停止使用时间轴。

    我确实使我的代码正常工作。 还有一个问题:休眠电流。 休眠电流为45uA。 我板上只有三个器件(uC、radio、reg)。 所有这三个在睡眠模式中都被禁用。 在定时器退出时、我使用:_bis_SR_register_on_exit (LPM3_bits|GIE);

    此致、

    Ray Vincent

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

    1.要更改哪个寄存器? 当您开始工作时、是否有任何风险让您感到担忧?

    2.很抱歉。 您仍然存在什么问题? 平均电流过高或睡眠电流过高?

    如果您正在讨论休眠电流、 我想、您可以在逐个卸下所有三个器件后进行测试、以检查哪一个器件消耗的功率最大。

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

    >_bis_SR_register_on_exit  (LPM3_bits|GIE);

    我不能想到这能做你想做的事的任何背景。 在 main()中,要进入 LPM,请使用:

    >_bis_SR_register (LPM3_bits|GIE);     //睡眠(启用)直到中断  

    在 ISR 中、要从 LPM 中取出 main、请使用:

    >_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);  //唤醒主函数

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

    您好、伊斯天、

    你好。 请参阅下面我们客户对您的问题的回答。 非常感谢。

    我要更改的寄存器是 TA0R。 没有太多的顾虑、因为它正在工作。

    2.平均电流正常。 睡眠电流过高(45uA)。

    3.电路板运行时很难卸下这些器件。 此外、由于器件都处于睡眠状态、因此测试结果并不公平。 不清楚哪个器件正在驱动哪个器件。 我想清楚地了解 TI 微控制器连接到另一个睡眠设备时、该微控制器的每个端口引脚的用途。 其中一个微端口引脚是到其中一个器件的使能输出。 当微型休眠时、它需要处于低电平。 在进行微睡眠之前、我是否可以配置为输出并将其驱动为低电平、或者我是否需要使用下拉电阻器? 当微型休眠时、另一个微型端口引脚需要处于高电平。 我可以配置为输出并将其驱动为高电平、还是需要使用上拉电阻器? 我应该如何处理输入引脚的微型端口引脚? 当驱动它们的器件处于睡眠状态时、它们的输出将为低电平。 这是否足够、或者我是否需要使用下拉电阻器。

    此致、

    Ray Vincent

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

    GPIO 的最低功耗设置是使其输出低电平。 下拉不会有太大帮助。

    2.我建议您尝试不同的假设。

    因为休眠电流为45uA。 我确信 MSP430会进入 LPM3。 在 MSP430侧、您需要做的就是检查 GPIO 设置。 如果使用内部晶体、也会导致电流略高。

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

    您好、伊斯天、

    你好。 请参阅以下客户对您的最新回复的回复。 非常感谢。

    我只使用32KHz 晶振。 请回答我的问题:其中一个微端口引脚是到其中一个器件的使能输出。 当微型休眠时、它需要处于低电平。 在进行微睡眠之前、我是否可以配置为输出并将其驱动为低电平、或者我是否需要使用下拉电阻器? 当微型休眠时、另一个微型端口引脚需要处于高电平。 我可以配置为输出并将其驱动为高电平、还是需要使用上拉电阻器? 我应该如何处理输入引脚的微型端口引脚? 当驱动它们的器件处于睡眠状态时、它们的输出将为低电平。 这是否足够、或者我是否需要使用下拉电阻器。  我有更多的发现:我看到电流泵以60Hz 的速率发生。 放置在微控制器引脚10上的物理1Mohm 下拉电阻器消除了这些情况。 休眠电流现在为1.8uA (我所期望的)。 我用软件尝试执行此操作时没有成功(命令行:P2DIR=0x73;P2OUT=0x01;P2REN&=~BIT2;)。 为什么引脚10上的软件下拉电阻不起作用?

    此致、

    Ray Vincent

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

    >P2DIR=0x73;P2OUT=0x01;P2REN&=~BIT2;

    这将关闭 P2.2 (引脚10)上的内部下拉。 尝试:

    >P2DIR=0x73;P2OUT=0x01;P2REN |= BIT2;

    通常、MCU 的 GPIO 设置应由另一端器件的数据表进行管理 如果器件的引脚为"输入"、则应在 MCU 引脚处驱动(输出)、对于器件的"输出"、MCU 应配置为输入。 扫描器件数据表以获取有关"内部上拉{up/down}"的注释、这些注释并不总是位于引脚说明处。 此外、如果您的系统中有任何设备断开连接的可能性、您可能会考虑在连接设备时使用一个不会设置总线冲突的级别上的拉{up/down}。 (您也可以很轻松地将 MCU 侧从上拉切换到下拉。)

    未经请求:如果您使用的是20引脚器件、请考虑数据表(SLAS735J)第3页上"器件引脚分配"下方关于 P3REN 的第二个"注释"。 我了解到芯片内部的20引脚和28引脚裸片是相同的、额外的焊盘只是未连接且悬空。

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

    您好、Bruce、

    你好。 另一个问题来自我们的客户。 请参阅以下内容以供参考。 非常感谢。

    "如何使用 IAR IDE 创建和下载"发布"代码而不是"调试"代码?"

    此致、

    Ray Vincent

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

    我几年来没有使用过 IAR、但是根据 IDE 用户指南(UIDE430-10)第111页、工作区视图顶部有一个下拉菜单。 我在这里找到了 UG:

    https://wwwfiles.iar.com/msp430/webic/doc/EW430_IDEGuide.pdf