由于 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);