我想驱动 BLDC 电机,我使用 ATMEGA32 作为控制器的 CPU,我在从 BLDC 电机读取霍尔效应传感器时遇到问题
这是我的代码:
DDRB=(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5);
DDRD=(0<<0)|(0<<1)|(0<<2)|(0<<3);
PORTD=(1<<0)|(1<<1)|(1<<2)|(1<<3);
PORTB 作为 OUTPUT 和 PORTD 作为 INPUT 这是主程序:
if (~(PORTD &(1<<0)) && PORTD &(1<<1) && ~(PORTD &(1<<2))) /// 0 1 0
{
PORTB=(1<<0)|(0<<1)|(0<<2)|(1<<3)|(0<<4)|(0<<5);
}
else if (~(PORTD &(1<<0)) && PORTD &(1<<1) && PORTD &(1<<2)) /// 0 1 1
{
PORTB=(0<<0)|(0<<1)|(0<<2)|(1<<3)|(0<<4)|(1<<5);
}
...........
我的回答是该程序无法从霍尔效应传感器读取逻辑零 (0),因此 BLDC 无法正常运行,如何读取 AVR ATMEGA32 中的多个输入?我使用 Codeblock 和 winavr ....
非常感谢