?? can-demo-1.c
字號:
j+=0x10; for (i=0; i<8; i++) can_dataB[i]= (j+i);
j+=0x10; for (i=0; i<8; i++) can_dataC[i]= (j+i);
j+=0x10; for (i=0; i<8; i++) can_dataD[i]= (j+i);
j+=0x10; for (i=0; i<8; i++) can_dataE[i]= (j+i);
j =0xF0; for (i=0; i<8; i++) can_dataX[i]= (j+i);
can_tx_MOb0.pt_donne = can_data0;
can_tx_MOb1.pt_donne = can_data1;
can_tx_MOb2.pt_donne = can_data2;
can_tx_MOb3.pt_donne = can_data3;
can_tx_MOb4.pt_donne = can_data4;
can_tx_MOb5.pt_donne = can_data5;
can_tx_MOb6.pt_donne = can_data6;
can_tx_MOb7.pt_donne = can_data7;
can_tx_MOb8.pt_donne = can_data8;
can_tx_MOb9.pt_donne = can_data9;
can_tx_MObA.pt_donne = can_dataA;
can_tx_MObB.pt_donne = can_dataB;
can_tx_MObC.pt_donne = can_dataC;
can_tx_MObD.pt_donne = can_dataD;
can_tx_MObE.pt_donne = can_dataE;
can_rxtxMOb.pt_donne = can_dataX;
standart_ID =0x0000000; can_tx_MOb0.id.ext = standart_ID;
extended_ID =0x1DE0001; can_tx_MOb1.id.ext = extended_ID;
standart_ID+=0x2 ; can_tx_MOb2.id.ext = standart_ID;
extended_ID+=0x2 ; can_tx_MOb3.id.ext = extended_ID;
standart_ID+=0x2 ; can_tx_MOb4.id.ext = standart_ID;
extended_ID+=0x2 ; can_tx_MOb5.id.ext = extended_ID;
standart_ID+=0x2 ; can_tx_MOb6.id.ext = standart_ID;
extended_ID+=0x2 ; can_tx_MOb7.id.ext = extended_ID;
standart_ID+=0x2 ; can_tx_MOb8.id.ext = standart_ID;
extended_ID+=0x2 ; can_tx_MOb9.id.ext = extended_ID;
standart_ID+=0x2 ; can_tx_MObA.id.ext = standart_ID;
extended_ID+=0x2 ; can_tx_MObB.id.ext = extended_ID;
standart_ID+=0x2 ; can_tx_MObC.id.ext = standart_ID;
extended_ID+=0x2 ; can_tx_MObD.id.ext = extended_ID;
standart_ID+=0x2 ; can_tx_MObE.id.ext = standart_ID;
can_tx_MOb0.ctrl = CONF_NOIDE | CONF_DLC_8;
can_tx_MOb1.ctrl = CONF_IDE | CONF_DLC_4;
can_tx_MOb2.ctrl = CONF_NOIDE | CONF_DLC_8;
can_tx_MOb3.ctrl = CONF_IDE | CONF_DLC_4;
can_tx_MOb4.ctrl = CONF_NOIDE | CONF_DLC_8;
can_tx_MOb5.ctrl = CONF_IDE | CONF_DLC_4;
can_tx_MOb6.ctrl = CONF_NOIDE | CONF_DLC_8;
can_tx_MOb7.ctrl = CONF_IDE | CONF_DLC_4;
can_tx_MOb8.ctrl = CONF_NOIDE | CONF_DLC_8;
can_tx_MOb9.ctrl = CONF_IDE | CONF_DLC_4;
can_tx_MObA.ctrl = CONF_NOIDE | CONF_DLC_8;
can_tx_MObB.ctrl = CONF_IDE | CONF_DLC_4;
can_tx_MObC.ctrl = CONF_NOIDE | CONF_DLC_8;
can_tx_MObD.ctrl = CONF_IDE | CONF_DLC_4;
can_tx_MObE.ctrl = CONF_NOIDE | CONF_DLC_8;
/* Clock prescaler Reset & SREG.I Set */
CLKPR = 0x80; CLKPR = 0x00;
SREG = 0x80;
DDRA=0xFF;
PORTA=0x00;
/*________________________________________*/
/*_____ USART CONFIGURATION ______________*/
/*________________________________________*/
InitUART_0(UART_BAUD(BAUD_RATE_9600,XTAL_CPU_8)); // Setup the UART 0
CPrintfUART_0("\r\nFeb 04 -CAN-Demo-1: Tests of CAN.lib routines\r\n");
/*________________________________________*/
/*_____ CAN CONTROLLER CONFIGURATION _____*/
/*________________________________________*/
CAN_CONTROLLER_RESET;
RazAllMailbox();
/* Load CAN Timer Prescaler */
CANTCON = 0xFF;
/* Input Clock of CAN Controller: 8MHz */
switch (BitRate)
{
case 2:
CanSetBRP (BitRate_250K[0]);
CanSetSJW (BitRate_250K[1]);
CanSetPRS (BitRate_250K[2]);
CanSetPHS2 (BitRate_250K[3]);
CanSetPHS1 (BitRate_250K[4]);
break;
case 1:
CanSetBRP (BitRate_500K[0]);
CanSetSJW (BitRate_500K[1]);
CanSetPRS (BitRate_500K[2]);
CanSetPHS2 (BitRate_500K[3]);
CanSetPHS1 (BitRate_500K[4]);
break;
case 0: default:
CanSetBRP (BitRate_1M[0]);
CanSetSJW (BitRate_1M[1]);
CanSetPRS (BitRate_1M[2]);
CanSetPHS2 (BitRate_1M[3]);
CanSetPHS1 (BitRate_1M[4]);
break;
}
/* Set SMP */
// CANBT3 = CANBT3 | (1<<SMP);
/* Enable all interrupts */
CANGIE=0xFF; /* with OVRTIM */
// CANGIE=0xFE; /* without OVRTIM */
CANIE2=0xFF; CANIE1=0xFF;
/* Enable CAN Controller */
CAN_CONTROLLER_ENABLE;
/*____________________________________________________________*/
/*__ CONFIGURE THE MESSAGE OBJECTs 0 & 14 TO SEND A MESSAGE __*/
/*____________________________________________________________*/
/* MOb 0 */
CAN_SET_CHANNEL(CHANNEL_0);
conf_tx = can_tx_MOb0.ctrl;
pt_candata_tx = can_tx_MOb0.pt_donne;
can_tx_id = can_tx_MOb0.id;
SendCanMsg();
/* MOb 1 */
CAN_SET_CHANNEL(CHANNEL_1);
conf_tx = can_tx_MOb1.ctrl;
pt_candata_tx = can_tx_MOb1.pt_donne;
can_tx_id = can_tx_MOb1.id;
SendCanMsg();
/* MOb 2 */
CAN_SET_CHANNEL(CHANNEL_2);
conf_tx = can_tx_MOb2.ctrl;
pt_candata_tx = can_tx_MOb2.pt_donne;
can_tx_id = can_tx_MOb2.id;
SendCanMsg();
/* MOb 3 */
CAN_SET_CHANNEL(CHANNEL_3);
conf_tx = can_tx_MOb3.ctrl;
pt_candata_tx = can_tx_MOb3.pt_donne;
can_tx_id = can_tx_MOb3.id;
SendCanMsg();
/* MOb 4 */
CAN_SET_CHANNEL(CHANNEL_4);
conf_tx = can_tx_MOb4.ctrl;
pt_candata_tx = can_tx_MOb4.pt_donne;
can_tx_id = can_tx_MOb4.id;
SendCanMsg();
/* MOb 5 */
CAN_SET_CHANNEL(CHANNEL_5);
conf_tx = can_tx_MOb5.ctrl;
pt_candata_tx = can_tx_MOb5.pt_donne;
can_tx_id = can_tx_MOb5.id;
SendCanMsg();
/* MOb 6 */
CAN_SET_CHANNEL(CHANNEL_6);
conf_tx = can_tx_MOb6.ctrl;
pt_candata_tx = can_tx_MOb6.pt_donne;
can_tx_id = can_tx_MOb6.id;
SendCanMsg();
/* MOb 7 */
CAN_SET_CHANNEL(CHANNEL_7);
conf_tx = can_tx_MOb7.ctrl;
pt_candata_tx = can_tx_MOb7.pt_donne;
can_tx_id = can_tx_MOb7.id;
SendCanMsg();
/* MOb 8 */
CAN_SET_CHANNEL(CHANNEL_8);
conf_tx = can_tx_MOb8.ctrl;
pt_candata_tx = can_tx_MOb8.pt_donne;
can_tx_id = can_tx_MOb8.id;
SendCanMsg();
/* MOb 9 */
CAN_SET_CHANNEL(CHANNEL_9);
conf_tx = can_tx_MOb9.ctrl;
pt_candata_tx = can_tx_MOb9.pt_donne;
can_tx_id = can_tx_MOb9.id;
SendCanMsg();
/* MOb 10 */
CAN_SET_CHANNEL(CHANNEL_10);
conf_tx = can_tx_MObA.ctrl;
pt_candata_tx = can_tx_MObA.pt_donne;
can_tx_id = can_tx_MObA.id;
SendCanMsg();
/* MOb 11 */
CAN_SET_CHANNEL(CHANNEL_11);
conf_tx = can_tx_MObB.ctrl;
pt_candata_tx = can_tx_MObB.pt_donne;
can_tx_id = can_tx_MObB.id;
SendCanMsg();
/* MOb 12 */
CAN_SET_CHANNEL(CHANNEL_12);
conf_tx = can_tx_MObC.ctrl;
pt_candata_tx = can_tx_MObC.pt_donne;
can_tx_id = can_tx_MObC.id;
SendCanMsg();
/* MOb 13 */
CAN_SET_CHANNEL(CHANNEL_13);
conf_tx = can_tx_MObD.ctrl;
pt_candata_tx = can_tx_MObD.pt_donne;
can_tx_id = can_tx_MObD.id;
SendCanMsg();
/* MOb 14 */
CAN_SET_CHANNEL(CHANNEL_14);
conf_tx = can_tx_MObE.ctrl;
pt_candata_tx = can_tx_MObE.pt_donne;
can_tx_id = can_tx_MObE.id;
SendCanMsg();
while (MOb_Tx_message!=14); /* wait for the end of all Tx */
while(TRUE)
{
/* Standard reception on MOb 0 */
CAN_SET_CHANNEL(CHANNEL_0);
can_rx_filt.ext=0;
can_rx_msk.ext=0;
conf_rx = CONF_NOIDE | CONF_MSK_IDE | CONF_NORTR | CONF_DLC_8;
ConfChannel_Rx();
/* Extended reception on MOb 1 */
CAN_SET_CHANNEL(CHANNEL_1);
can_rx_filt.ext=0;
can_rx_msk.ext=0;
conf_rx = CONF_IDE | CONF_MSK_IDE | CONF_NORTR | CONF_DLC_8;
ConfChannel_Rx();
while (Rx_message_flag == FALSE) ; /* Received ? */
/* Get MOb number of the incomming message */
CAN_SET_CHANNEL(MOb_Rx_message);
/* Prepare output message if not enougth data ! */
can_dataX[0] = CANGCON; can_dataX[1] = CANGSTA;
can_dataX[2] = CANGIT; can_dataX[3] = CANGIE;
can_dataX[4] = CANEN2; can_dataX[5] = CANEN1;
can_dataX[6] = CANSTMPH; can_dataX[7] = CANSTMPL;
/* Read incomming message */
pt_st_can_rx = & can_rxtxMOb;
ReadCanMsg (CHANNEL_DISABLE);
/* Transmit the incomming message on MOb 14 with 8 data */
CAN_SET_CHANNEL(CHANNEL_14);
conf_tx= ((can_rxtxMOb.ctrl & (~DLC_msk))| CONF_DLC_8);
pt_candata_tx = can_rxtxMOb.pt_donne;
can_tx_id = can_rxtxMOb.id;
SendCanMsg();
/* Transmit UART message */
CPrintfUART_0("\r\nUART-0, Message ID: ");
ID_First = 0; j = 3;
for (i=0; i<4; i++)
{ ID_Temp = can_rxtxMOb.id.tab[j];
UART_Temp = ID_Temp >> 4;
UART_Temp = 0x30 | UART_Temp;
if ((UART_Temp == 0x30) & (ID_First == 0)) UART_Temp = 0x20;
else ID_First = 1;
if (UART_Temp >= 0x3a) UART_Temp = UART_Temp + 7;
PutCharUART_0 (UART_Temp);
UART_Temp = 0x0F & ID_Temp;
UART_Temp = 0x30 | UART_Temp;
if ((UART_Temp == 0x30) & (ID_First == 0)) UART_Temp = 0x20;
else ID_First = 1;
if (UART_Temp >= 0x3a) UART_Temp = UART_Temp + 7;
PutCharUART_0 (UART_Temp);
j--;
}
ID_Temp = can_rxtxMOb.id.ext = 0; /* Reset */
ID_Temp = CONF_IDE & can_rxtxMOb.ctrl;
if (ID_Temp == 0)
{ CPrintfUART_0(", CAN 2A (Std)");
}
else
{ CPrintfUART_0(", CAN 2B (Ext)");
}
Rx_message_flag = CLR;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -