请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AM4378 您好!
我的设置涉及4个有刷直流电机、这些电机具有高分辨率编码器(55000个周期/旋转)、我将使用 AM437x 板对其进行控制。 我使用 EHRPWM 通过改变 PWM 占空比来改变电机速度。 编码器的输出连接到一个普通 GPI 引脚、我已将该引脚配置为使用/sys/interface 在上升沿触发。 我已经了解了 eCAP 模块、但是它们目前正被其他一些硬件使用、不可用于此目的。
当值文件发生更改时、epole_wait 会通知我、即接收到编码器节拍。 每个电机都有四个这样的线程在运行、这会增加编码器计数、而另一个线程则执行其余的处理(PID、错误检查等)。 每个线程的重量都很轻、处理线程大约需要20us。 当编码器输出频率在8-10kHz 范围内时、该设置在低速时工作正常。 但是、当我提高速度并且编码器频率上升到大约20kHz 时、编码器线程错过了相当多的节拍。 我知道在上下文切换和其他处理中会花费一些时间、但即使如此、我也不应错过超过50%的节拍、这是在我的案例中发生的。 这是尽管为编码器线程提供了非常高的调度优先级。 是否有办法提高线程开关频率? 我是否达到了任何硬件上限? 有没有更好的方法来解决这个问题?
感谢你能抽出时间!
Puneeth