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.

[参考译文] MSPM0G3507:基于通用事件的计时器中断仅触发一次 ADC

Guru**** 2460380 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1484917/mspm0g3507-generic-event-based-timer-interrupt-triggers-adc-only-once

器件型号:MSPM0G3507

工具与软件:

您好!

我遇到基于事件的 ADC 中断问题。 目前我使用基于 CPU 的定时器中断来观察配置的正确性、这很好。

在 CPU 中断方法中、我可以看到计时器工作正常、我还可以使用基于通用计时器事件的零事件触发来触发 ADC 一次、但只能触发一次。 我已经查看了示例"adc12_triggered_by_timer_event"、并进行了几乎相同的配置、这就是为什么只进行一个 ADC 执行调用、但我想获得 ADC 读数、每次计时器中发生零事件时、我都不只调用一次 ADC、而是查看许多示例、但无法找到解决方案。

此外、当我尝试使用这个时、我不想同时获得从起始地址到结束地址的每个结果(例如0-10)、但我还想在两个 ADC 计时器开始和在一个中断之后读取 ADC 值(例如0-5)之间放置一个中断、然后在这两个计时器调用之间的另一个中断6-10。 我是否必须 在程序运行时中而不是初始化函数中更改 CTL2寄存器结束地址和起始地址配置?

提前感谢!

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

    您好!

    我会说是的。 我认为您需要在程序运行时更改 CTL2。  

    但另一个问题是、为什么不使用 ADC0和 ADC1来实现您的要求。 您可以使用 ADC0来对0-5信号进行采样、然后使用 ADC1来获得其余信号。  

    此致、

    Cash Hao

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

    尊敬的 Cash:

    感谢您的答复、很遗憾、我不能使用 ADC1、但我将尝试更改程序运行时中的 CTL2。  

    针对我以前的问题、我找到了这张表  

    表右侧的 ADC 触发和采样模式是事件触发器。 我尝试将序列通道转换与自动结合使用。 我有一些问题,可能会解决我的问题,我会感谢你能回答这些。

    1.每次要进行采样时、是否必须设置 ENC 位、或者它是否自动被计时器中的零事件触发覆盖? 如果我必须设置 ENC 位、我是否必须在 CTL2更改之前或之后设置它?

    2.如果事件触发为零事件、除了在调试中使用寄存器视图外、如何查看它是否起作用?

    3.我必须以某种方式放置一个条件语句(例如 if)来触发 ADC 采样、或者当 TRIG 位被设置为 Event 时、该语句是否真的自动由硬件通用事件触发器完成?

    4.如果发生零事件、我是否必须清除它、或者它是否由 ADC 自动清除(我同时连接了 FPU 和 FSUB)? 如果我必须清除它、我将如何做?   

    5. ADC 如何知道它应对哪个事件触发做出反应以开始采样、是否在计时器配置中通过 IMASK 完成? 因为尚不清楚、如何告诉 ADC 开始采样的对象。

    提前感谢。

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

    您好!

    1.在手动模式下,每次测量都需要设置 ENC 位。 并需要在 CTL2上进行更改后设置。 在"自动"模式下、您不需要设置它。

    2.我建议您使用手动模式、并在计时器中断程序中设置 ENC 位。 在本例中、您可以看到它是如何工作的。

    3.如果 ADC 是由事件触发的,你不需要在那里放置一个条件。  

    4.如果您按照第2点方法操作、则无需清除。

    5.在手动模式下、清除 ENC 位将启动 ADC 转换。 但对于自动模式、我不确定 ADC 是如何知道它的。

    此致、

    Cash Hao