本帖最后由 芯圣电子官方QQ 于 2023-7-25 10:44 编辑
目前正在使用HC89F0541设计无刷电机驱动板,6路PWM+3路外部中断,当电机转速大概为4400r/m左右和到4600r/m左右的时候,外部中断有点不正常,目前是在外部中断函数中对LED不停取反,当转速到达这两个值左右时,灯闪烁不正常,计算的转速也不正常,不知道是不是电机干扰的问题,4000r/m以下没有问题;期间,通过降低osc频率,使用内部外部晶振都一样,单独使用一个板子模拟hall信号输入,通过电位器调节输入的hall(外部中断信号)频率,计算的转速可达2万多转/分钟都没有问题,LED等闪烁正常,用示波器测量的,pwm输出信号貌似也是没有问题的;但是已使用电机测试,就不正常;有没有大神遇到过类似情况,下面是中断函数代码:
void INT2_7_Rpt() interrupt INT2_7_VECTOR
{
// LED2_BLINK();
if(PINTF0&0xE0)//3个引脚有任一个变化
{
PINTF0 &=~ 0xE0;//清除INT7,6,5中断标志位
/* 根据当前hall值换相 */
BLDC_ChangePhase(1,HallValue);//默认正转
T3CON &= ~0x04;//TR3=0,停止T3定时器
Hall_TimeSum += (u32)((((u32)TH3 << 8) | TL3) + ((u32)Timer3_OverFlow_Cnt<<16));//读取计数值
TH3 = 0;//复位计数器
TL3 = 0;
T3CON |= 0x04;//TR3=1,打开T3定时器
Hall_Cnt++;
if(Hall_Cnt==24)
{
Hall_IntervalTime = Hall_TimeSum/24;
Hall_TimeSum=0;
Hall_Cnt=0;
}
Timer3_OverFlow_Cnt=0;//清除溢出计数
Motor_StallingFlag=FALSE;//清除堵转标志
LED2_BLINK();
}
}
|