我是 Stack Overflow 社区的新手,希望您能帮我解决这个问题。我正在尝试在不使用中断的情况下读取编码器。我想到的解决方案是使用一个计数器,使用 PSoC,可以通过 UpCnt 和 DwnCnt 模式进行选择。Pin_encoder_B 和 Pin_encoder_A 是我的两条信号线,根据我的编码器的旋转而上下移动。我使用 Pin_encoder_A 作为时钟,当它出现时,我查看 Pin_encoder_B,如果 Pin_encoder_B 和 Pin_encoder_A 相等或不相等,我知道我的编码器是顺时针还是逆时针旋转,我应该能够正确地减少或增加我的计数器。除了函数 Counter_ReadCounter(); 之外,我几乎尝试了所有方法;(在我的代码 Counter_Logic_ReadCounter();) 中总是返回周期值。我无法理解如何解决它。有人可以告诉我我的代码有什么问题吗?谢谢你们。
int main(void)
{
CyGlobalIntEnable;
UART_Start();
Counter_Logic_Start();
Timer_Start();
isr_sin_StartEx(Custom_ISR_SIN);
Pos_senza_isr=0;
for(;;)
{
}
}
#include "InterruptRoutine.h"
#include "project.h"
CY_ISR(Custom_ISR_SIN){
Timer_ReadStatusRegister();
Pos_senza_isr=Counter_Logic_ReadCounter();
sprintf(DataBuffer, "%ld\r\n", Pos_senza_isr);
UART_PutString(DataBuffer);
}
在这里输入图片描述