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.

[参考译文] TMS320F28054F:ADCSOCFRC1的轮询处理

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/734595/tms320f28054f-round-robin-handling-of-adcsocfrc1

器件型号:TMS320F28054F
主题中讨论的其他器件:MOTORWARE

我有2个问题。 首先、我有兴趣使用 ADCSOCFRC1偶尔向普通 EOC 中断添加额外的 ADC 任务、以便在大多数时间内正常的循环过程对更少的 ADC 进行采样。  但是、不清楚这种 ADCSOCFRC1强制作业如何适应循环方案。   ADCSOCFRC1任务是否会立即完成、延迟下一个挂起或添加到轮询列表末尾的非强制 ADC?  只要对 正在使用的 ADC 的常规中断驱动集几乎没有影响、我的应用就可能无关紧要。  我计划检查 ADCINT1、以确定何时提供答案。

第二、我想确认、如果配置正确、中断驱动集将不会生成对中断例程的调用、直到锁存并收集了整组 ADC 值之后(只要对 ADC 列表进行了更改) 以及在某些情况下尝试使用 ADSOCFRC1可能会对其产生影响。

 

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

    Q1)假设用于与新 SOC 强制关联的转换的 SOCx 的数字高于其他自动触发的 SOCx,则强制 SOC 将等待直到它按轮循顺序出现。 如果在发出强制信号时 ADC 处于空闲状态(假设至少完成了一个自动触发转换)、则会立即为其提供服务。

    就其他 E2E 读者而言、如果您希望强制 SOC 采用先例、则可以修改 SOCPRIORITY 字段、它将优先于任何未启动但待处理的 SOC。 再说一次、它听起来不是您想要的、但也想给出这种解释。

    Q2)由于添加的强制 SOC 的行为不会挤占任何当前循环转换(基于对其 SOC 编号的上述假设)、因此这不会成为问题。 此外、中断触发器对任何 EOC 信号都是可配置的、因此即使添加了新的强制 SOC、该转换也不会触发中断、因为它未配置。

    最后、如果您确实希望强制 SOC 优先于其他中断、则先前配置的中断与您的上一轮循环转换相关联、仍将保证所有相关转换都是当前/锁存的。

    如果您对您的配置或 F2805x 器件的其他部分有其他疑问、敬请告知。

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

    感谢您提供的有用信息。  关于第一个示例勘误表、我还有一个问题。  我假设额外的第一个采样可以是 SOC0在每个循环循环循环上执行的任何 ADC 读取、而这是在我的项目中的 ADC 中断驱动列表上设置的。  如果在强制 SOC 处于同一环路中之前中断驱动的 SOC0不会触发、那么我不确定是否在更高的 SOC 值下添加强制 SOC、如果它偶尔会受到采样错误的影响。  也许我应该在所有强制 SOC 之前添加另一个被忽略的 SOC。  以下是我的项目:

    Motorware 中断服务 SOC (包括已忽略的勘误表 SOC0)、未使用 MOTION

    额外的中断服务 SOC、用于在 SOC 数高于我们允许 Motorware 使用的值时控制 PWM7输出

    偶尔会以更高的 SOC 数强制执行 SOC 采样请求、然后悠闲地检查结果是否准备好监控运行状况(如 CPU 温度)

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    David、
    您的问题是有效的、也就是说、如果强制 SOC 在正常 PWM 控制 SOC 进入空闲状态时未处于暂挂状态、则 ADC 将变为空闲状态、当您的强制 SOC 进入时、它的运行方式将像第1个采样一样、因为 ADC 处于空闲状态。

    由于中断生成是可配置的、因此可以更轻松地将这些"运行状况检查"类型的 ADC 转换从与主控制环路 SOC 相同的 SOC 触发器触发。 您仍然可以使用相同的中断触发器、以便同时获取控制环路 ADC 结果;但 ADC 会不断转换"运行状况检查"、然后变为空闲状态。 然后、您可以定期轮询运行状况检查结果。 在最坏的情况下、它们将是1个 EPWM 触发器 OLD。

    上述唯一的缺点是 ADC 将变得更长、如果基于 PWM7的 SOC 出现、它们可能会挂起。 另外需要注意的是、基于 PWM7的 SOC 可能会改变这些 SOC 的循环指针、这些 SOC 位于主 SOC 和这些新的后台样本之间。

    需要考虑很多、但如果您需要更多澄清、请随时回复。

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

    这就是为什么我决定避免使用强制 SOC 方法、只需将几个 SOC/ADC 寄存器添加到 Motorware 使用的列表中(相同的中断源)、并更改其中一个寄存器上的源通道以读取我正在监控的不同信号。  我还转换了之前用作 Morotware HAL 调用指南的 C200Ware 代码。  请参阅 e2e.ti.com/.../2718196