📄 mscan.c
字号:
/* Include */
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908GZ60.h> /* include peripheral declarations */
#include "Common.h"
#include "MSCAN.h"
#include "ESCI.h"
/* Global Variables */
extern Mytype can_r,can_t;
extern UINT32 vms_time;
extern UINT8 acpower_limit;
extern UINT8 command[9];
extern UINT8 flag2;
extern UINT16 rpm_fb;
extern UINT16 dcc_fb;
extern UINT8 acp_status;
/*****************************************************************************
* Function: CAN_Transmit()
*
* Description: none
*
* Returns: none
*
* Notes:
*
*****************************************************************************/
void CAN_Transmit(UINT8 _acpower,UINT8 _accommand,UINT16 _acpspd,UINT8 _acstatus){
can_t.dsr0 = _acpower;
can_t.dsr1 = _accommand;
can_t.dsr2 = (UINT8)_acpspd;
can_t.dsr3 = _acpspd>>8;
can_t.dsr7 = _acstatus;
if(CTFLG_TXE0==1){
DLR0 = can_t.dlr;
DSR00 = can_t.dsr0;
DSR10 = can_t.dsr1;
DSR20 = can_t.dsr2;
DSR30 = can_t.dsr3;
DSR40 = can_t.dsr4;
DSR50 = can_t.dsr5;
DSR60 = can_t.dsr6;
DSR70 = can_t.dsr7;
IDR00 = can_t.idr0;
IDR10 = can_t.idr1;
IDR20 = can_t.idr2;
IDR30 = can_t.idr3;
TBPR0 = 0x00;
CTFLG = 1;
}else if(CTFLG_TXE1==1){
DLR1 = can_t.dlr;
DSR01 = can_t.dsr0;
DSR11 = can_t.dsr1;
DSR21 = can_t.dsr2;
DSR31 = can_t.dsr3;
DSR41 = can_t.dsr4;
DSR51 = can_t.dsr5;
DSR61 = can_t.dsr6;
DSR71 = can_t.dsr7;
IDR01 = can_t.idr0;
IDR11 = can_t.idr1;
IDR21 = can_t.idr2;
IDR31 = can_t.idr3;
TBPR1 = 0x01;
CTFLG = 2;
}else if(CTFLG_TXE2==1){
DLR2 = can_t.dlr;
DSR02 = can_t.dsr0;
DSR12 = can_t.dsr1;
DSR22 = can_t.dsr2;
DSR32 = can_t.dsr3;
DSR42 = can_t.dsr4;
DSR52 = can_t.dsr5;
DSR62 = can_t.dsr6;
DSR72 = can_t.dsr7;
IDR02 = can_t.idr0;
IDR12 = can_t.idr1;
IDR22 = can_t.idr2;
IDR32 = can_t.idr3;
TBPR2 = 0x01;
CTFLG = 4;
}
}
/*****************************************************************************
* Function: CAN_Receive()
*
* Description: none
*
* Returns: none
*
* Notes:
*
*****************************************************************************/
void interrupt CAN_Receive(void){
UINT16 id,id_m;
can_r.idr0 = REC_IDR0;
can_r.idr1 = REC_IDR1;
can_r.idr2 = REC_IDR2;
can_r.idr3 = REC_IDR3;
id = ((((UINT16)can_r.idr0)<<8)+can_r.idr1)>>5;
if(id == VMSStatus_A){
//vms_time=((UINT32)can_r.dsr0)<<24+((UINT32)can_r.dsr1)<<16+((UINT32)can_r.dsr2)<<8+can_r.dsr3;
id_m = 20;
flag2|=0x01; // set vmsstatus_flag
}else if(id == VMS2AC_EHPS){
can_r.dsr0 = REC_DSR0;
//can_r.dsr1 = REC_DSR1;
//can_r.dsr2 = REC_DSR2;
//can_r.dsr3 = REC_DSR3;
//can_r.dsr4 = REC_DSR4;
//can_r.dsr5 = REC_DSR5;
//can_r.dsr6 = REC_DSR6;
//can_r.dsr7 = REC_DSR7;
acpower_limit=can_r.dsr0;
id_m = 30;
}else if(id == ACP2AC){
can_r.dsr0 = REC_DSR0;
can_r.dsr1 = REC_DSR1;
can_r.dsr2 = REC_DSR2;
can_r.dsr3 = REC_DSR3;
//can_r.dsr4 = REC_DSR4;
//can_r.dsr5 = REC_DSR5;
//can_r.dsr6 = REC_DSR6;
can_r.dsr7 = REC_DSR7;
id_m = 40;
rpm_fb = ((UINT16)can_r.dsr1<<8)+can_r.dsr0;
dcc_fb = (((UINT16)can_r.dsr3<<8)+can_r.dsr2)/64;
acp_status = can_r.dsr7;
}
/* if(id != VMSStatus_A){
command[0]=can_r.dsr0;
command[1]=can_r.dsr1;
command[2]=can_r.dsr2;
command[3]=can_r.dsr3;
command[4]=can_r.dsr4;
command[5]=can_r.dsr5;
command[6]=can_r.dsr6;
command[7]=can_r.dsr7;
command[8]=id_m;
SCI_Transmit();
}*/
CRFLG_RXF = 1; //Clear the flag
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -