#include "emcdeal.h" #include "syspar.h" #include "typedefine.h" #include "user.h" #include "bikethrottle.h" #include "switchhall.h" Emc_Struct Emcfun; EMCEXTERN_Struct EcmDeal={0,0,FALSE}; UWORD uwEMCHallTime[8]; const UBYTE HallNextSect[8]={0,3,6,2,5,1,4,0};//{0,5,3,1,6,4,2,0}; UWORD uwHallinFisrtSta=0; void Emchandle(void) { Emcfun.ulCurValPu= ((ULONG)EMC_MIN_CNT_VAL << 14) /IBASE; if(EcmDeal.EmcModeFlag==TRUE) { if((cp_stBikeRunInfoPara.uwBikeGear==0) ||(bikethrottle_stBikeThrottleOut.uwThrottlePercent<=200) ||(alm_blAlmOccrFlg!=0)) { EcmDeal.EmcModeFlag=FALSE; Emcfun.JoinCnt=0; } } } UWORD uwSectorNumTest; UWORD uwSectorNumback; void HALL_CNT_INST_IRQHandler() //@30us { switch (DL_Timer_getPendingInterrupt(HALL_CNT_INST)) { case DL_TIMER_IIDX_ZERO: if(EcmDeal.ulHuoerOneCnt<2000) EcmDeal.ulHuoerOneCnt++; if(EcmDeal.EmcModeFlag==FALSE) { if( switchhall_stOut.uwSectorNum !=uwSectorNumback) { uwSectorNumback=switchhall_stOut.uwSectorNum; uwHallinFisrtSta=switchhall_stOut.uwSectorNum; uwEMCHallTime[switchhall_stOut.uwSectorNum]=EcmDeal.ulHuoerOneCnt; EcmDeal.ulHuoerOneCnt=0; EcmDeal.ulHuoerOnetime=uwEMCHallTime[1]+uwEMCHallTime[2]+uwEMCHallTime[3]+uwEMCHallTime[4]+uwEMCHallTime[5]+uwEMCHallTime[6]; EcmDeal.ulHuoerOnetime=EcmDeal.ulHuoerOnetime/6; if( (cp_stBikeRunInfoPara.uwBikeGear>0) &&(cp_stBikeRunInfoPara.uwBikeGear<=5) &&(bikethrottle_stBikeThrottleOut.uwThrottlePercent>250) // && (adc_stDownOut.uwIpeakPu< Emcfun.ulCurValPu) //相电流小 &&(curSpeed_state.state != Stop) )// { //EcmDeal.swLowSpdPu=switchhall_stOut.swLowSpdPu; if((Emcfun.SpeedValtBack < (scm_uwSpdFbkLpfAbsPu+80)) //速度稳定 &&(Emcfun.SpeedValtBack >(scm_uwSpdFbkLpfAbsPu-80))) { Emcfun.JoinCnt++; if(Emcfun.JoinCnt>TIME_JOIN) { EcmDeal.EmcModeFlag=TRUE; } } else { Emcfun.SpeedValtBack=scm_uwSpdFbkLpfAbsPu; Emcfun.JoinCnt=0; } } else { Emcfun.SpeedValtBack=scm_uwSpdFbkLpfAbsPu; Emcfun.JoinCnt=0; } } EcmDeal.ulHuoerOutCnt=0; } else { if(EcmDeal.ulHuoerOutCnt<3000) EcmDeal.ulHuoerOutCnt++; if(EcmDeal.ulHuoerOutCnt>EcmDeal.ulHuoerOnetime ) { EcmDeal.ulHuoerOutCnt=0; switchhall_stOut.uwSectorNum=HallNextSect[uwHallinFisrtSta]; // uwSectorNumTest=HallNextSect[uwHallinFisrtSta]; uwHallinFisrtSta= switchhall_stOut.uwSectorNum; // uwHallinFisrtSta++; // if(uwHallinFisrtSta>6) // uwHallinFisrtSta=1; } } break; default: break; } }