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.

[参考译文] TM4C1294KCPDT:GPTM TAOTE 触发器、CADC 与 PWM0触发器

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/773520/tm4c1294kcpdt-gptm-taote-trigger-cadc-versus-pwm0-trigger

器件型号:TM4C1294KCPDT

由于     SS2的 TAOTE 触发器 导致400us OneShot (GPTM4)延迟、因此被挡板的延迟仅为9.8us。 GPTM4使用由 GPIO PM3位切换监控的120MHz SYSCLK 加载 ILR 0xBB80 (48000个节拍)。

  在加载 TAILR 寄存器期间将 PM3设置为高电平 、然后在 每个 PWM0输出 六(80us)个周期期间启用 OneShot。   SS2 触发延迟 400us、 但在  SS2中断处理期间 GPIO PM3位清零时每隔9.8us 一次。   似乎每隔9.8us 重新加载一次 GPTM4值、即使它没有延迟最初设置的48000个周期的完整计数。

当通过 Tivaware 调用将 GPTM4配置为 OneShot 模式时、为什么在发生超时事件之前允许重新加载 TAILR 寄存器?  如果    在 SYSCLK 报告为120MHz 时、每个80us 周期没有重新加载 TAILR、为什么48000个节拍只发生9.8us OneShot 事件 ?  希望 PM3保持 400us 的高电平、但 仅脉冲大约 为0.1us、 脉冲边缘有大量振铃。

注意:  使用示波器探头监测 PM4、软件中断 过去配置为 PM3。

/* OneShot Timer-4A/B 32位触发器 ADC0-SS2
*采样消隐延迟 INA240输出稳定时间*/
MAP_TimerClockSourceSet (TIMER4_base、TIMER_CLOCK 系统);
MAP_TimerConfigure (TIMER4_base、TIMER_CFG_ONE_SHOT);
/*触发 ADC0 SS2 INA240在 GPTM 超时事件上采样*/
HWREG (TIMER4_base + TIMER_O_ADCEV)|= TIMER_ADCEV_TATOADCEN;
/*设置 TAOTE 位(GPTMCTL)、启用 GPTM ADC0触发器*/
HWREG (TIMER4_base + TIMER_O_CTL)|= TIMER_CTL_TAOTE;
/*针对超时事件禁用 IMR 中断*/
MAP_TimerIntDisable (TIMER4_base、TIMER_TINA_TIMEOUT);
/*在发生 PWMnENABLE 寄存器输出事件后启用*/
MAP_TimerDisable (TIMER4_base、TIMER_A);
/* PWM 触发事件不需要中断*/
MAP_IntDisable (INT_TIMER4A); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BP101、
    我怀疑存在代码问题。 我们强烈建议不要使用直接寄存器写入、因为这会使理解代码变得更加困难、因此更容易出错。 我怀疑您可能会在中断例程中覆盖您的计时器4配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    探针位于 PM3上、应该是 PM4、因此 GPTM OneShot 实际上 可以正常工作。

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

    当 PWM0是信号的时间源时、TI 工程师也许可以弄清楚为什么 ADC0拒绝采样@40us、AINx 输入电平>40mV? 这是我两年来一直在努力解决的真正问题! 在 EVM 开发阶段对变量进行操作似乎是可能的。 遗憾的是、OPAMP 样本结果在今天的后续发现阶段被确定为不准确!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    TAOTE 主题与原始问题相关、通过添加视觉辅助工具进一步推断该主题。

    编辑的线程文本~

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

    尊敬的 Bob:

    [引用 user="Bob Crosby"]我们强烈建议不要使用直接寄存器写入,因为这会使理解代码变得更加困难,因此更容易出错

    因为 Tivaware 调用会隐藏 更明显的寄存器 HWREG 会快速显示内联、所以必须不同意。  Tivaware 调用使得使用数据表来解决问题变得更加困难、并且 无法 记录使用的寄存 器甚至 偏移。 除了早期版本的 Tivaware 调用 之外、GPTM 的配置 只需使 能 A/B PWM 中断、并且经过了对1/2宽定时器的错误配置各种控制寄存器设置。 堆栈混乱是限制重复快速函数调用以更新中断例程内的控制寄存器并降低指令执行速度的另一个原因。 您可以将应用程序置为超级空间、如果 POP/PUSH 在 RAM 上变得过多、它可以/仍将失败。 注意 TI-RTOS 出于充分的理由鼓励禁用 Tivaware 断言、它们主要用于调试。