📄 chap3.c
字号:
/* ========================================================================= */
/* The information contained herein is the exclusive property of */
/* Sunplus Technology Co. And shall not be distributed, reproduced, */
/* or disclosed in whole in part without prior written permission. */
/* (C) COPYRIGHT 2004 SUNPLUS TECHNOLOGY CO. */
/* ALL RIGHTS RESERVED */
/* The entire notice above must be reproduced on all authorized copies. */
/* ========================================================================= */
/* */
/* ========================================================================= */
/* Project Name : AN_SPMC75_0003 */
/* File Name : chap3.c */
/* Description : 系统服务函数 */
/* */
/* Processor : SPMC75F2413A */
/* Tools : u'nSP IDE tools v1.18.1A or later version */
/* ========================================================================= */
/* Revision */
/* ========================================================================= */
/* Version : 1.00 */
/* Date : 2005.9.1 */
/* Modified by : 更换正规的文件头和最新的头文件 */
/* Description : */
/* ========================================================================= */
//=============================================//
#include "BLDC.h"
/*=================================================================*/
/*IPM 关断
/*=================================================================*/
void IPM_Trigger_Off(void)
{
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
}
//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC正转时,120度上相PWM方波信号
//6,4,5,1,3,2
//=============================================//
void IPM_Trigger_PU120FullPWM(unsigned int position)
{
switch(position&0x07)
{
case(6): //V1,V2
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode1;
break;
case(4): //V2,V3
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode1;
break;
case(5): //V3,V4
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
break;
case(1): //V4,V5
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
break;
case(3): //V5,V6
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode1 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
break;
case(2): //V6,V1
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode1 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
break;
default:
IPM_Trigger_Off();
break;
}
}
//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC反转时,120度上相PWM方波信号
//1,3,2,6,4,5
//=============================================//
void IPM_Trigger_NU120FullPWM(unsigned int position)
{
switch(position&0x07)
{
case(1): //V1,V2
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode1;
break;
case(3): //V2,V3
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode1;
break;
case(2): //V3,V4
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
break;
case(6): //V4,V5
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
break;
case(4): //V5,V6
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode1 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
break;
case(5): //V6,V1
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode1 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
break;
default:
IPM_Trigger_Off();
break;
}
}
//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC正转时,120度下相PWM方波信号
//6,4,5,1,3,2
//=============================================//
void IPM_Trigger_PD120FullPWM(unsigned int position)
{
switch(position&0x07)
{
case(6): //V1,V2
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode2 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
break;
case(4): //V2,V3
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
break;
case(5): //V3,V4
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
break;
case(1): //V4,V5
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode2;
break;
case(3): //V5,V6
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode2;
break;
case(2): //V6,V1
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode2 |\
CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
break;
default:
IPM_Trigger_Off();
break;
}
}
//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC反转时,120度下相PWM方波信号
//1,3,2,6,4,5
//=============================================//
void IPM_Trigger_ND120FullPWM(unsigned int position)
{
switch(position&0x07)
{
case(1): //V1,V2
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode2 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
break;
case(3): //V2,V3
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
break;
case(2): //V3,V4
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode2 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
break;
case(6): //V4,V5
P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High | \
CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode2;
break;
case(4): //V5,V6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -