?? canuser.c
字號(hào):
void CanSendFixedValue(void)
{
while(CANIsTxRdy() == 0);
//CANPutTxPRI(3); //Send Priority highest
//EXIDE is clr in TXB0SIDL.EXIDE //幀格式 =0標(biāo)準(zhǔn)幀; =1擴(kuò)展幀;
//TXRTR is clr in CANPutTxCnt(8); //幀類型 =0數(shù)據(jù)幀; =1遠(yuǎn)程幀;
//CANPutTxCnt(8); //數(shù)據(jù)長(zhǎng)度 Data DLC
CANPutTxCID(BoardAddress,CAN_R_FIXED_VALUE);//CID
ComTxBuffer[0].bits.lbyte.L = 1; //數(shù)據(jù)包號(hào)
ComTxBuffer[0].bits.hbyte.H = 1; //總包數(shù)
ComTxBuffer[1].W = T_K_VO1; //1點(diǎn)溫度系數(shù)
ComTxBuffer[2].W = T_K_VO2; //2點(diǎn)溫度系數(shù)
ComTxBuffer[3].W = C_K_VOL; //電壓采集系數(shù)
CANPutTxDataTyp0(ComTxBuffer);
CANSend(1);
// while(CANIsTxRdy() == 0);
// //CANPutTxPRI(3); //Send Priority highest
// //EXIDE is clr in TXB0SIDL.EXIDE //幀格式 =0標(biāo)準(zhǔn)幀; =1擴(kuò)展幀;
// //TXRTR is clr in CANPutTxCnt(8); //幀類型 =0數(shù)據(jù)幀; =1遠(yuǎn)程幀;
// //CANPutTxCnt(8); //數(shù)據(jù)長(zhǎng)度 Data DLC
// CANPutTxCID(BoardAddress,CAN_R_FIXED_VALUE);//CID
// ComTxBuffer[0].bits.lbyte.L = 2; //數(shù)據(jù)包號(hào)
// ComTxBuffer[0].bits.hbyte.H = 2; //總包數(shù)
// ComTxBuffer[1].W = HI_TEMP; //電池包溫度上限
// ComTxBuffer[2].W = LO_TEMP; //電池包溫度下限
// ComTxBuffer[3].W = 0; //
// CANPutTxDataTyp0(ComTxBuffer);
// CANSend(1);
}
/*********************************************************************
* Function: CanSendFixedValue(void)
*
* PreCondition: The configure message has received.
*
* Input: none
*
* Output: none
*
* Side Effects:
*
* Overview: Send the configure Cell protect message to the top
* computer.
*
* Note:
********************************************************************/
void CanFunction(unsigned char Functioncode)
{
switch(Functioncode)
{
case CAN_R_CONFIG: //讀配置 0
{
CanSendConfig();
}break;
case CAN_W_CONFIG: //寫(xiě)配置 1
{
CanReciveConfig();
}break;
case CAN_R_FIXED_VALUE: //讀定值 2
{
CanSendFixedValue();
}break;
case CAN_W_FIXED_VALUE: //寫(xiě)定值 3
{
CanReceiveFixedValue();
}break;
case CAN_R_ANALOG: //讀模擬量 4
{
CanSendAnalog();
}break;
default:break;
}
}
///*********************************************************************
// * Function: void SystermInit(void)
// *
// * PreCondition:
// *
// * Input: none
// *
// * Output: none
// *
// * Side Effects:
// *
// * Overview: Initialize the module.
// *
// * Note:
// ********************************************************************/
//void SystermInit(void)
//{
// Name1 = eeprom_read_byte(0x00);
// Name2 = eeprom_read_byte(0x01);
// Name3 = eeprom_read_byte(0x02);
// Name4 = eeprom_read_byte(0x03);
// Name5 = eeprom_read_byte(0x04);
// if((Name1 != 'L') //Systerm first time Power on
// &&(Name2 != 'I') //My name LIWEI
// &&(Name3 != 'W')
// &&(Name4 != 'E')
// &&(Name5 != 'I'))
// {
// T_K_VO1 = 10000; //第一次上電各系數(shù)默認(rèn)值為10000
// T_K_VO2 = 10000;
// C_K_VOL = 10000;
// eeprom_write_byte(0x00,'L');
// eeprom_write_byte(0x01,'I');
// eeprom_write_byte(0x02,'W');
// eeprom_write_byte(0x03,'E');
// eeprom_write_byte(0x04,'I');
// eeprom_write_byte(0x06, 55); //EEPROM address form 0x00 to 0xFF
// eeprom_write_word( 8,T_K_VO1); //將各路默認(rèn)系數(shù)寫(xiě)入EEPROM
// eeprom_write_word(10,T_K_VO2);
// eeprom_write_word(12,C_K_VOL);
// BoardAddress = eeprom_read_byte(6); //Board Address save in EEPROM address 0x01
// tempaddress = BoardAddress;
// CANInit(tempaddress,0); //CID and BitRate 50k
// }
// else if((Name1 == 'L') //Systerm is not first time Power on
// &&(Name2 == 'I') //My name LIWEI
// &&(Name3 == 'W')
// &&(Name4 == 'E')
// &&(Name5 == 'I'))
// {
// BoardAddress = eeprom_read_byte(0x06); //Address save in EEPROM address 0x06
// tempaddress = BoardAddress;
// CANInit(tempaddress,0); //CID and BitRate 50k
// Tempervoltage0 = 0; //一點(diǎn)溫度較準(zhǔn)值
// Tempervoltage1 = 0; //二點(diǎn)溫度較準(zhǔn)值
// T_K_VO1 = eeprom_read_word(8); //讀取1、2點(diǎn)溫度和單只電池電壓系數(shù)
// if(T_K_VO1 > 6000 && T_K_VO1 < 15000)
// {
// T_K_VO1 = 10000;
// }
// T_K_VO2 = eeprom_read_word(10);
// if(T_K_VO2 > 6000 && T_K_VO2 < 15000)
// {
// T_K_VO2 = 10000;
// }
// C_K_VOL = eeprom_read_word(12);
// if(C_K_VOL > 6000 && C_K_VOL < 15000)
// {
// C_K_VOL = 10000;
// }
// }
// TXB0CONbits.TXREQ = 0; //send request bit clr
// TRISCbits.TRISC3 = 0; //RUNLED =0 方向?yàn)檩敵?=1 方向?yàn)檩斎?
// TRISCbits.TRISC5 = 0; //74HC138_A
// TRISCbits.TRISC6 = 0; //74HC138_B
// TRISCbits.TRISC7 = 0; //74HC138_C
// TRISBbits.TRISB0 = 0; //74HC138_E
// TRISBbits.TRISB1 = 0; //74HC138_F
// TRISCbits.TRISC2 = 0; //FOR TEMPERATURE2 POWER
// TRISCbits.TRISC1 = 0;
// TEMP0POWER = 1; //TEMPERATURE POWER
// TEMP1POWER = 1;
//}
///*********************************************************************
// * Function: void AnalogCollect(void)
// *
// * PreCondition:
// *
// * Input: none
// *
// * Output: none
// *
// * Side Effects:
// *
// * Overview: AnalogCollect includes voltage and temperature.
// *
// * Note:
// ********************************************************************/
// void AnalogCollect(void)
// {
// ADUserV(4);
// Delay1KTCYx(10);
//// TEMP0POWER = 1; //熱敏電阻供電
//// TEMP1POWER = 1;
//// Delay1KTCYx(150);
//
// Temperature0 = ADUserT(0);
//// TEMP0POWER = 0;
//
// Temperature1 = ADUserT(1);
// EVTemperature= (Temperature0+Temperature1)/2;
//// TEMP1POWER = 0;
// }
///*********************************************************************
// * Function: void main(void)
// *
// * PreCondition:
// *
// * Input: none
// *
// * Output: none
// *
// * Side Effects:
// *
// * Overview: Initialize the module.
// *
// * Note:
// ********************************************************************/
//void main(void)
//{
// UINT work;
// unsigned char confaddress;
// unsigned char Functioncode;
// SystermInit();
// while(1)
// {
// //BoardAddress = eeprom_read(0x22);
// if(BoardAddress != tempaddress) //Set CANSFilter
// {
// tempaddress = BoardAddress;
// CANSetFilter (tempaddress);
// }
// AnalogCollect(); //采集電池電壓與溫度
// RUNLED = ~RUNLED; //運(yùn)行指示亮
// //Delay1KTCYx(240);
// if (CANIsRxRdy())
// {
// work.word = CANGetRxCID();
// confaddress = (unsigned char)((work.word&0x01E0)>>5);
// Functioncode= (unsigned char)((work.word&0x7000)>>12);
// CANGetRxDataTyp0(ComRxBuffer); //將接收數(shù)據(jù)寫(xiě)入數(shù)據(jù)緩沖區(qū)以備后繼使用
// CANRead();
// switch(Functioncode)
// {
// case CAN_R_CONFIG: //讀配置 0
// {
// CanSendConfig();
// }break;
// case CAN_W_CONFIG: //寫(xiě)配置 1
// {
// CanReciveConfig();
// }break;
// case CAN_R_FIXED_VALUE: //讀定值 2
// {
// CanSendFixedValue();
// }break;
// case CAN_W_FIXED_VALUE: //寫(xiě)定值 3
// {
// CanReceiveFixedValue();
// }break;
// case CAN_R_ANALOG: //讀模擬量 4
// {
// CanSendAnalog();
// }break;
// default:break;
// }
// }
// }
//}
///********************************************************************
// End Of File
//********************************************************************/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -