dsPIC30F2010 控制带传感器的BLDCM 无刷直流电机(8)
发布时间:2021-06-06
发布时间:2021-06-06
dsPIC30F2010 microchip 无刷直流电机
AN957
/*******************************************************************
以下代码用于设置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启动转换
// 同时采样4个通道
// 将RB2/AN2作为CH0连接到电位计……
// ch1连接母线电压、Ch2连接电机,Ch3连接电位计// Tad来源于内部RC(4uS)
// 启动ADC
/********************************************************************InitMCPWM,对PWM做以下初始化:1. FPWM = 16000 hz2. 独立的PWM
3. 使用OVDCON控制输出
4.用从电位计读取的ADC值设置占空比5. 将ADC设置为由PWM特殊触发信号触发
*********************************************************************/void InitMCPWM(void){
PTPER = FCY/FPWM - 1;
PWMCON1 = 0x0700;OVDCON = 0x0000;PDC1 = 100;PDC2 = 100;PDC3 = 100;
SEVTCMP = PTPER;PWMCON2 = 0x0F00;PTCON = 0x8000; }
//---------------------------------------------------------------------// 这是普通的1 ms延迟程序,用于提供1 mS到65.5 秒的延迟。
// 如果N = 1,则延迟为1 mS;如果N = 65535,则延迟为65,535 mS。 // 注意FCY用于计算。
// 请根据上述定义语句做出必要的更改(PLLx4或PLLx8等)// 以计算出正确的FCY。
void DelayNmSec(unsigned int N){
unsigned int j;while(N--)
for(j=0;j < MILLISEC;j++);}
// 禁止PWM
// 允许使用OVD控制
// 将PWM1、PWM2和PWM3初始化为100
// 后分频比设为1:16// 启动PWM
DS00957A_CN第10页© 2005 Microchip Technology Inc.