/************************************************ ****************************** �� �� ����API.c ����������API���ƺ������ļ� �� �ߣ����� �� ����V1.0 �� �ڣ�2016.11.3 ******************************************************************************/ #include "API.h" #include "Stepper_Motor.h" #include "Common.h" #include "Buzzer.h" extern void DoCAN_Timer_Update(uint16_t Interval); extern void CoCAN_Init_Mode_Tx_ISR(void); extern void Drive_Info_Speed_Plus_Conversion_ISR(void); //extern void Drive_Info_Fuel_Plus_Conversion_ISR (void); APImsTimerStruct APImsTimer; volatile uint16_t APIRollingCounter; uint8_t Time10ms; uint8_t Time2ms; uint8_t APIBGNMEnable; uint8_t PriorityLock; //�������ȼ�����Ϊ�˱�֤��ִ������������� ��ִ��Ӧ�ñ����ⷢ���� /****************************************************************************** ��������API_Start �� �ܣ�����API APIÿ��API_INT_CYCLE���ڻᷢ��һ���ж�,ϵͳ�Ը��ж�Ϊʱ���������� API_INT_CYCLE��ҪԤ����API.h�ж��� �� ������ ����ֵ���� ******************************************************************************/ void API_Start(void) { VREGAPICL_APICLK = 1; //Bus Clock ��ΪAPI��ʱ��Դ #pragma MESSAGE DISABLE C2705 VREGAPIR = (uint16_t)((BUSCLK / 1000000 ) * API_INT_CYCLE / 2); //����API�ж����� VREGAPICL_APIE = 1; //��API�ж� VREGAPICL_APIFE = 1; //ʹ��API,����ʼ��ʱ APImsTimer.Cnt = 0; APImsTimer.Flag = 0; APIRollingCounter = 0; } /****************************************************************************** ��������API_Stop �� �ܣ��ر�API �� ������ ����ֵ���� ******************************************************************************/ void API_Stop ( void ) { VREGAPICL_APIE = 0; //����API VREGAPICL_APIFE = 0; //��ֹAPI�жϹ��� } /****************************************************************************** ��������API_1ms_Timer_Update �� �ܣ���ȡ���붨ʱ���±�־ ����ָʾһ��1ms��ʱ��� �� ������ ����ֵ��1 - 1ms��ʱ��� 0 - 1ms��ʱδ��� ******************************************************************************/ uint8_t API_1ms_Timer_Update ( void ) { if( APImsTimer.Flag ) { APImsTimer.Flag = 0; return 1; } else return 0; } /****************************************************************************** �жϺ��� ******************************************************************************/ #pragma CODE_SEG __NEAR_SEG NON_BANKED //���жϺ�������FLASH�ķǷ�ҳ�� void interrupt NONUSE1_ISR(void) { } void interrupt NONUSE2_ISR(void) { } void interrupt NONUSE3_ISR(void) { } void interrupt NONUSE5_ISR(void) { } /****************************************************************************** ��������interrupt API_ISR �� �ܣ�API�жϷ����� �� ������ ����ֵ���� ******************************************************************************/ uint8_t iTIME1MS ; uint8_t T1MS_SYB_FF; static uint8_t tempCnt = 0; void interrupt API_ISR ( void ) { VREGAPICL_APIF = 1; //ͨ��д1��0�жϱ�־ Buzzer_Play_ISR(); //������ APImsTimer.Cnt++; tempCnt++; if(tempCnt >= 20) { tempCnt = 0; MSCAN0_L_Data_Service(); } if ( APImsTimer.Cnt >= API_MS_CNT_TOP ) { APImsTimer.Cnt = 0; APImsTimer.Flag = 1; } if ( APIBGNMEnable ) { Time10ms++; if ( Time10ms >= 200 ) { Time10ms = 0; PriorityLock = 1; } } else { PriorityLock = 0; Time10ms = 0; } APIRollingCounter++; DoCAN_Timer_Update(API_INT_CYCLE); if(PriorityLock == 1) CoCAN_Init_Mode_Tx_ISR(); Stepper_Motor_Rotating_ISR(); /*********************�������***************/ //0.128MS�г� if(SCI0SR1_RDRF) //���ڽ��ܻ������������� { RX_BUF[RSB_P] = SCI0DRL; //��SCI1DRL���Զ���SCI1SR1_RDRF if(RSB_P != cnRSBufLen - 1) RSB_P++; } /***************1MS************************/ //0.128MS�г� iTIME1MS++; if ( iTIME1MS == 8 ) // 1.024MS { iTIME1MS = 0; T1MS_SYB_FF = 1; } } #pragma CODE_SEG DEFAULT