dsPIC30F2010 microchip 无刷直流电机
AN957
{
if (HallValue == 1) {
HallValue = 0xFF; if (++Count == 5)
//如果位于区间1
// 强制一个新值作为区间值
// 对于10极电机,将此代码段执行5个电周期(即1个// 机械周期)
{
Timer3 = TMR3;// 读tmr3的最新值TMR3 = 0;Count = 0;
GetSpeed();// 确定速度}}
}else// 如果按下S2,停止电机{
PWMCON1 = 0x0700;// 禁止PWM输出
OVDCON = 0x0000;// 将PWM改写为低电平。Flags.RunMotor = 0;// 复位运行标志while (S2)// 等待释放按键
DelayNmSec(10);
}
// while (1)结束
}}
/*******************************************************************以下代码用于设置ADC寄存器,该代码可实现下列功能:
1. 1个通道转换(本例中,该通道为RB2/AN2)2. PWM触发信号启动转换3. 电位计连接到CH0和RB24. 手动停止采样和启动转换5. 手动检查转换完成
*********************************************************************/void InitADC10(void){
ADPCFG = 0xFFF8; ADCON1 = 0x0064; ADCON2 = 0x0200; ADCHS = 0x0002; ADCON3 = 0x0080; IFS0bits.ADIF = 0; IEC0bits.ADIE = 1; ADCON1bits.ADON = 1;}
// 将端口B的RB0到RB2配置为模拟引脚;将其它引脚配置为数字引脚// PWM启动转换// 采样CH0通道
// 将RB2/AN2作为CH0连接到电位计。// Tad来源于内部RC(4uS)// 清零标志// 允许中断// 启动ADC
DS00957A_CN第14页© 2005 Microchip Technology Inc.