板子还没有回来,利用其他的板子,先把霍尔检测和PWM输出 写了出来 发现了一个问题
1 在Tianxj01兄台的基础上,我采用互补输出的方式
Set_All_GPIO_Quasi_Mode;
/* PWM模式设置 */
PWM0_P12_OUTPUT_ENABLE;
PWM1_P11_OUTPUT_ENABLE;
PWM2_P10_OUTPUT_ENABLE;
PWM3_P00_OUTPUT_ENABLE;
PWM4_P01_OUTPUT_ENABLE;
PWM5_P03_OUTPUT_ENABLE;
/* PWM模式控制 */
PWM_COMPLEMENTARY_MODE;
PWM_GP_MODE_ENABLE; //群组模式
/* PWM输出频率为20KHZ */
PWMPH = 0x03;
PWMPL = 0x20;
/* 开启小占空比 测试用 */
SetyDuty(5);
/*霍尔中断IO引脚设置*/
P17_Input_Mode;
P16_Input_Mode;
P15_Input_Mode;
PICON=0XC1; //P15 P16 P17 设置边沿中断
PINEN=0XE0; //P15 P16 P17 下降沿触发中断
PIPEN=0XE0; //P15 P16 P17 上升沿触发中断
EA=1;
/* 死区设置 */
PWM01_DEADTIME_ENABLE;
PWM34_DEADTIME_ENABLE; /* 估计新唐库的错误,但是纯粹是名字的错误,讲错就错 实际是这PWM23 的死区设置 */
PWM45_DEADTIME_ENABLE;
PWM_DEAD_TIME_VALUE(0x1F); //死区时间为2us
/* 启动PWM */
set_LOAD;
set_PWMRUN;
/* 开启占空比 */
SetyDuty(80);
/* 模拟霍尔换向 */
SwitchPhase_A(_0B100);
while(1);
模拟霍尔换向,PWM输出波形换向也很正确,但是,发现一个问题,如图 红圆圈,这个尖怎么出来的,测量的是单片机IO部分,没有任何负载,完全是仿真机供电.
|