我正在为一个项目使用 MSP432,我想知道当增量编码器达到指定计数时如何生成中断。中断应阻止电机沿特定方向移动。
背景:我正在使用增量编码器来控制有刷电机。当刷子电机向左或向右移动时,它以机械方式连接到一个增量编码器,该编码器对脉冲或“咔嗒声”进行计数。增量编码器有效地控制了电机的运动极限。即,如果编码器以正确的方向读取 20 个脉冲,则电机应停止。我的项目有两种由 switch-case 语句控制的操作模式。第一种是常规模式,第二种是用户可以通过操纵杆控制电机的模式。无论程序处于哪种模式,当达到运动极限时,电机都应该停止。
伪代码:
Case: Routine Button Mode
{
// Motor executes right, left, right movement routine
digitalWrite(directionMotor,RIGHT); // telling motor what direction to go
analogWrite(pwm_motor2,60); // telling motor to activate at 60% PWM
if(encoder_count == Motion_Limit)
analogWrite(pwm_motor,0); // tell motor to stop
// change direction
digitalWrite(directionMotor,LEFT); // telling motor what direction to go
analogWrite(pwm_motor2,60); // telling motor to activate at 60% PWM
}
Case: Joystick_Control
{
while(analogRead<10) // Joystick is pushed to the left
{
digitalWrite(directionMotor,LEFT); // telling motor what direction to go
analogWrite(pwm_motor2,60); // telling motor to activate at 60% PWM
if(encoder_count == Motion_Limit)
analogWrite(pwm_motor,0); // tell motor to stop
}
while(analogRead>1000) // Joystick is pushed to the right
{
digitalWrite(directionMotor,RIGHT); // telling motor what direction to go
analogWrite(pwm_motor2,60); // telling motor to activate at 60% PWM
if(encoder_count == Motion_Limit)
analogWrite(pwm_motor,0); // tell motor to stop
}
} // end case statement
同样,无论程序处于何种操作模式,都应该在达到计数时停止。即使已达到运动限制,程序仍应允许操纵杆控制驱动电机远离运动限制。也就是说,如果count == 20在右极限,我仍然可以向左驱动电机。本质上,编码器应该在运行的所有时刻都跟踪电机。
问题: 1. 如何在 MSP432 上声明中断?2. 我可以使用增量编码器作为中断吗?我发现的大多数示例都使用输出高或低信号作为中断标志的按钮。我不确定我可以用编码器做同样的事情