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/MSP430FR2676:基于中断扫描2通道 ADC 和多个计时器源。

Guru**** 2585275 points
Other Parts Discussed in Thread: MSP430FR2433, MSP430FR2676

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/892316/ccs-msp430fr2676-scanning-2-channel-adc-and-multiple-timers-sources-interrupt-based

器件型号:MSP430FR2676
主题中讨论的其他器件:MSP430FR2433

工具/软件:Code Composer Studio

您好!

     我想知道如何设置以下内容、

1]如何设置3个计时器源中断、一个用于电池监控、另一个用于创建延迟、第三个用于蜂鸣器的 PWM。

2]如何在 通道序列/通道重复序列中设置2个 ADC 通道(A0、A1)。

我知道要设置单个计时器和单个 ADC 通道。 有没有这些示例?

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

    您好、Gourav、

    请查找包括计时器和 ADC 1在内的外设示例。

    http://dev.ti.com/tirex/explore/node?devices=MSP430FR2676&node=AGLy8GjhLdjEfzayGamipQ__IOGqZri__LATEST

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

    您好、Gourav、

    [引用用户="Gourav H"]

     我想知道如何设置以下内容、

    1]如何设置3个计时器源中断、一个用于电池监控、另一个用于创建延迟、第三个用于蜂鸣器的 PWM。

    2]如何在 通道序列/通道重复序列中设置2个 ADC 通道(A0、A1)。

    我知道要设置单个计时器和单个 ADC 通道。 有没有这些示例?

    [/报价]

    让我看看我是否能找到符合您期望的东西、但让我确保我了解您想要做的事情。

    1.电池监控的定时器中断-可以是以某个固定速率产生中断的任何定时器。  在 ISR 中、您可以确定是否/何时读取电池。

    2.您计划使用哪种 PWM 频率? 或者、更好的问题是、您将使用 PWM 的目的是什么?

    3.对于 A/D,是否将使用其中一个 A/D 通道来测量电池电压,另一个通道按顺序读取其他电压?

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

    您好 Dennis、  

         A0通道用于检查加速计输出、A1通道用于电池管理。

    • 当加速器的 ENABLE 引脚变为高电平时、加速器会提供一些电压。 对于加速计、当发生特定事件且 ENABLE 引脚为高电平时、将连续扫描 ADC。 在下一个事件发生时、通过使能引脚变为低电平来禁用加速计。
    • 对于电池管理、ADC 通道必须在大约3秒间隔之间以一定的延迟进行连续扫描。

    为此、我们需要一个计时器。

    这两个引脚也可以连续读取、并且当它超过特定的阈值电压时(对于通道 A0和 A1)执行一个任务  

     计时器用于

    1. 在代码中创建延迟。
    2. 蜂鸣器、通过改变 PWM 在特定事件上产生不同的声音模式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gourav、

    随附的示例代码演示了如何将 Timer1用作"节拍"计时器、该计时器可用于触发事件、例如以两种不同的速率读取电池和加速计。  请记住、这也可以通过两个单独的计时器来完成。  这是仅使用一个计时器的示例。

    如果您在浏览本示例后有疑问、请随时提问。

    另一个计时器 Timer0用于生成蜂鸣器的频率。

    注意:这些都基于 Resource Explorer 中的 MSP430FR2433的几个示例代码项目、并且由于与 FR2676属于同一系列、因此这些示例代码项目将起作用。  您只需确保为 FR2676设置项目即可。

    e2e.ti.com/.../msp430fr243x_5F00_timer_5F00_adc_5F00_example1.c

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

    尊敬的 Dennis:

    我对您提供的代码有一些疑问。

    1. 根据 msp430fr2676tpt 的用户指南、在 msp430fr2676.h 中定义了 ADCPCTL0至 ADCPCTL7 我已经检查它们是否未定义、所以线路//SYSCFG2 |= ADCPCTL6 | ADCPCTL7;  // A6 =电池、A7 =加速计//生成错误。
    2. ADC 通道的切换也可以在 Timer1 A0中断服务例程的计时器节拍事件中完成? 。  
    3. 调试宏的重要性是什么? 它们用于检查 MCU 是 lmp0模式、还是用于指示加速计和电池的 ADC 数据就绪。
    4. 我想通过12个自 Capios 按钮将其与电容式触控集成在一起 、 其中使用了 lpm3和 wale on Proximity、MCU 如何进出 lpm0和 lpm3。

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

    您好、Gourav、

    [引用 USER="Gourav H">根据 msp430fr2676tpt 的用户指南、ADCPCTL0至 ADCPCTL7在 msp430fr2676.h 中定义我已经检查它们是否未定义、所以行//SYSCFG2 |= ADCPCTL6 | ADCPCTL7;  // A6 =电池、A7 =加速计//生成错误。

    我在 MSP430FR2433上执行了此操作、因此您必须选择所需的模拟通道。

    [引用 USER="Gourav H"> ADC 通道的切换也可以在 Timer1 A0中断服务例程的计时器节拍事件中完成? 。  [/报价]

    是的。  我只展示了一种方法来实现它。  通常、您希望在 ISR (前台)中花费最少的时间并在主循环(后台)中执行此操作。

    [引用 USER="Gourav H">调试宏的重要性是什么? 它们用于检查 MCU 是 lmp0模式、还是用于指示加速计和电池的 ADC 数据就绪。[/quot]

    我使用调试宏来简化 IO 引脚的设置、清除或切换、因此我可以使用逻辑探头进行监控、以确保时序正确且一切正常工作。  您可以删除它们。

    [引用 user="Gourav H"]我想将其与12个自 Capios 按钮集成在一起,  这些按钮使用 lpm3和 wale on Proximity,MCU 如何进入和退出 lpm0和 lpm3

    如果您已经使用 CapTIvate 设计中心创建了一个项目,您将在主循环中看到,在调用 CAPT_appHandler()后,该器件被放置在 LPM0或 LPM3中。  这取决于您是将项目配置为使用 UART 运行(必须使用 LPM0)、还是所有其他配置都使用 LPM3。  原因是当使用 UART 时、从 LPM3启动时钟所需的时间太长(10uS)、您将丢失主机(或 PC)发送的一个或多个位、尤其是在波特率较高的情况下。  当使用 LPM0时、只有 CPU 停止、所有时钟保持运行。  因此、如果使用 UART、建议使用 LPM0。

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

    尊敬的 Dennis:

          [引用用户="Dennis Lehman">原因是当使用 UART 时、从 LPM3启动时钟所需的时间太长(10uS)、您将会错过主机(或 PC)发送的一个或多个位、尤其是在波特率较高的情况下。  当使用 LPM0时、只有 CPU 停止、所有时钟保持运行。  因此、如果使用 UART、建议使用 LPM0。[/quot]

    msp430fr2676在我的应用中充当主机、它通过波特率为9600的 UART 与 cc3220连接、并且这个应用由电池供电、所以必须实现低功耗(即 LPM3)。  9600波特率是否正常? 或者波特率的低多少、这样这些位不会在 LPM3中丢失??  

    SPI 和 I2C 在使用 LPM3时是否也存在一些问题?  我在 LPM3 (即 CAPT_appSleep ())中配置了项目、而在 LPM0中配置了其他项目(使用定时器/ADC/SPI/i2c/UART)。

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

    您好、Gourav、

    UART 由器件本身提供时钟、并且只提供配置波特率的 TX/RX 线上的数据。 因此、如果接收器的时钟未就绪、频率可能错误、甚至正在启动、当数据来自线路时、时钟拍会出错。 无论您配置的波特率如何、都是如此。 当数据来自线路时、应确保 UART 模块的时钟就绪。

    SPI 和 I2C 是另一种时钟由 CLK/SCL 线路供源的情况。 因此、即使当数据在线路上启动时器件时钟未就绪、SPI 和 I2C 也可以正常工作。