请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F2806 大家好、
我想从 ePWM 寄存器中对寄存器进行3次连续读数、我注意到这需要很多时间。 我必须执行以下操作:
- 从 ePWM1读取 TBCTR 寄存器
- 从 ePWM1读取 TBSTS 寄存器
- 再次从 ePWM1读取 TBCTR 寄存器
执行这些操作将需要在100MHz 时钟时序上的16个周期、并且我只能预期3个周期。 为什么? 这是我的代码。 从我的 C 软件中、我调用一个 asm 函数、该函数的开头为:
_ePWMcouterRead: ;加载 periph。 页 MOVWDP、#_Perif ;periph 值为1a0h、ePWM1寄存器的地址 ;读取计数器、1 个 MOVZAR0、@TBCTROff ;TBCTRoff 为0 ;读取方向 MOVZAR4、@TBSTSOff ;TBSTSOff 为1 ;读取计数器1 MOVUACC、@TBCTROff (笑声)
我的 ePWM 计数器配置为100MHz 计数器、无预分频器、1tick 为10ns。 为什么我在 ACC 中的价值高于 AR0乘以16的价值? 我本来只希望增加2倍,而不是16倍。 我无法理解这一点、如果我的寄存器中有一些设置、那么从密件寄存器读取的速度很慢、我也无法解除其故障。 同时使用 C 编写相同的代码、会产生相同的结果。 请提供提示、我确实很快就读出了这些值。
此致
Emanuele Peruzzi