我是新在堆栈溢出社区,我希望你能帮助我这个问题。我试图读取一个编码器,而不使用中断。我想到的解决方案是使用一个计数器,使用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(;;)
{
}}
#包括"InterruptRoutine.h“
#包括"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);
}
发布于 2022-10-03 13:42:31
您可以使用正交解码器组件,它满足您的上述要求。
https://stackoverflow.com/questions/69710059
复制相似问题