123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #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;
- }
- }
|