大家好,
QEISTAT寄存器有一个名为ERROR的位,"检测到错误时"设置为高。
我在文档中的任何位置都找不到有关"该位保持设置多长时间"的信息。 当两个正交信号同时发生变化时,它是否会在几个时钟期间短暂地高电平,并且在它回到零后立即高电平? 它是否会一度变高而再也不会回到低???
如果短暂的高电位,Tivaware QEIErrorGET()函数将没有太大意义,除非我们有幸在错误发生期间调用它。
此致
布鲁诺
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.
大家好,
QEISTAT寄存器有一个名为ERROR的位,"检测到错误时"设置为高。
我在文档中的任何位置都找不到有关"该位保持设置多长时间"的信息。 当两个正交信号同时发生变化时,它是否会在几个时钟期间短暂地高电平,并且在它回到零后立即高电平? 它是否会一度变高而再也不会回到低???
如果短暂的高电位,Tivaware QEIErrorGET()函数将没有太大意义,除非我们有幸在错误发生期间调用它。
此致
布鲁诺
您好,Bruno:
很高兴再次听到您的讲话。 希望您做得好。
它的时钟在几个相同的时间和两个正时短暂地变为零时会变高吗? 它是否会一次过高,一次过也不会回到低???[/QUOT]在我看来,QEISTAT寄存器中的错误标志不是粘滞的。 如果错误位是粘滞的(例如,在错误事件之后仍然保持设置),则软件必须有一种方法来清除它。 如果没有通过软件清除位的方法,清除位的唯一方法是进行外围设备重置。 因此,我不认为错误位是粘性的。 您是否注意到一些不同的地方?
您好Charles! 这里一切都很好,谢谢,希望你们做得好!
我完全同意这可能不是粘性的。 我没有遇到创建人工"编码器错误"信号的麻烦,因为我没有硬件可用,只在我们的编码器库中添加了一些额外的错误检查(是的,在没有错误的情况下处理编码器库, 多么有趣的事情!)。 进一步解释:
到目前为止,我们的旧库不会检查编码器错误情况, 但是我们最近有几个单元给我们提供了奇怪的距离数据,这可能是一个原因,所以我尝试通过软件诊断"错误编码器"(在真实设备中探测传感器并不容易)。
然后我被我发布的问题所吸引...如果问题不是粘性的,我如何确定我正在读取错误位"在它回到零之前"? 解决方案:我创建了一个ISR来维修编码器错误,在 那里我可以检查中断原因是否是错误标志。
但是,我不确定如何确定错误是否已消失... 我们需要这样做,因为一对QEI信号在短时间内同时转换并非不可能(所述'错误'的定义),例如, 当编码器通电时-之后,编码器100 % 正常,但软件已检测到“坏编码器”,并仍被卡住。
希望解释清楚,感觉自己有点困惑!
谢谢
布鲁诺
您好,
我也没有硬件来验证QEI是否存在此错误(两个信号同时发生变化)。
解决403.8663万解决方案403.8663万方案 :我可以在编码器中检查错误和中断。我也会尝试这样做。 目前我认为错误不会导致中断的产生。 根据数据表,会为 相位误差,方向变化,接收索引脉冲和速度计时器过期生成中断。 如果是这种情况,如果您在ISR中,错误标志可能仍为0,即使在您读取之前可能已经发生。