第一次用PIC的DSP片子,仿真调试电机PWM模块子程序,发现PWMH和PWML口都没有输出的,调试进入了死胡同,请同行帮忙分析下面程序是否有问题,谢谢
**********************************************/
#include"p30f2010.h"
#include<stdio.h>
#define uint unsigned int
#define uchar unsigned char
#define RB0 PORTB,0
#define RD0 PORTD,0
uint rec_counter,kgbzw,pwmbzw,spwmbzw,adval;
/*****************PWM 初始化子程序 *******************************/
void init_PWM()
{
INTCON1bits.NSTDIS=1 ; //中断嵌套禁止
//INTCON2bits.ALTIVT=0 ; //使用标准向量表(默认)
//IPC9=0x6000 ; //电机脉宽调制中断优先控制等级为6
//IPC10=0x7000 ; //故障A输入中断优先等级7
LATE=0x0000 ;
PTCON=0x0000 ; /*PWM时基控制寄存器*/
// PTMR=0x0000 ; //PWM时基寄存器,0-14bit为时基寄存器记数值
PTPER=50 ; //PWM时基周期寄存器,20KHz(50uS)
//SEVTCMP=0x0000 ; //特殊事件比较寄存器
//PHASE1=0x0000 ; //
PWMCON1=0x0077 ; //PWMxH,PWMxL使能为互补输出模式
//FCLCON1=0x0003 ; //禁止故障输入
//PWMCON2=0x0002 ; //控制寄存器2
DTCON1=0x000F ; //死区时间控制寄存器1
// DTR1=0x0040 ; //死区时间
//DTCON2=0X000F ; //死区时间控制寄存器2
FLTACON=0X0000 ; //故障A控制寄存器
//FLTBCON=0X008F ; //故障B控制寄存器
OVDCON=0X0009 ; //改写控制寄存器
PDC1=50 ; //PWM占空比寄存器1,为50
PDC2=50 ; //PWM占空比寄存器2,为50
PDC3=50 ;
OC1CON=0x0000 ; //关闭比较器输出
//IOCON1=0xC000 ; //PWM IO控制寄存器
// PTCON=0xF000 ; //PWM启动
PTCON=0x8000 ; //PWM启动
}
/*****************************延时程序***********************************/
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
/*********************************I/O初始化************************/
void init_io()
{
TRISB=0x003F;
TRISC=0xE000;
TRISD=0x0003;
TRISE=0x00CF;
TRISF=0x000C;
PORTB=0;
PORTC=0;
PORTD=0;
//PORTE=0;
PORTF=0;
}
/*****************************PWM调节*****************************/
void pwm_adj(void)
{
// if(kgbzw) //判断kgbzw=1?
// {
// if(pwmbzw)
// {
PTPER=adval ; //周期寄存器
// }
// if(spwmbzw)
// {
// PDC1=rec_counter ;
// PDC2=PDC1 ;
// PDC3=PDC1 ;
// }
//}
}
/***************** MAIN ROUTINE(主程序)**************************/
int main()
{
TRISEbits.TRISE0=0; //设置RE0-RE3为输出8、
TRISEbits.TRISE1=0;
TRISEbits.TRISE2=0;
TRISEbits.TRISE3=0;
LATEbits.LATE0=0;
LATEbits.LATE1=0;
LATEbits.LATE2=0;
LATEbits.LATE3=0;
init_io();
init_PWM();
while(1)
{
if(IFS2bits.PWMIF=1)
{
IFS2bits.PWMIF=0;
}
}
} |