工具/软件:Code Composer Studio
大家好、我有一个应用、在该应用中、我将正交编码器安装在电机上、我需要非常精确地在单转和多转中表示位置。 理想情况下、最好将 eQEP 模块配置为以两种方式表示位置。 反过来、QPOSCNT 将由索引事件或当 QPOSCNT 达到编码器的最大节拍数时复位。 反过来、QPOSCNT 会在多个编码器旋转过程中继续累积位置。
我看不到在硬件中支持此功能的方法。 因此、我的选项似乎是1)将正交信号连接到两个不同的 eQEP 模块、并让一个处理单圈、另一个处理多圈。 这不适用于我当前的应用、因为硬件不能满足这一要求。
我当前使用的方法的第二个选项是在软件中查找上溢或下溢事件、并手动跟踪发生这种情况时添加或减去 MAX_ENCODER_TICK 的情况。 这可以正常工作、但有时 PCU/PCO (下溢/上溢)标志与 QPOSCNT 寄存器不同步。 我的意思是、我将在前台检测到上溢或下溢事件、但在 QPOSCNT 中看不到相应的跳转、反之亦然。 当我检查前台的过流/下溢标志时、我已经尝试在关键部分禁用 QEINT 寄存器中的 PCO / PCU 中断、在关键部分我读取了标志值和 QPOSCNT 值、但这似乎没有帮助。
是否有办法保证 PCU/PCO 标志与 QPOSCNT 寄存器同步、以便在其它更新之前无法读取其中一个标志?