Datasheet

Can_Send_Flags = _CANSPI_TX_PRIORITY_0 & // form value to be used
_CANSPI_TX_XTD_FRAME & // with CANSPIWrite
_CANSPI_TX_NO_RTR_FRAME;
Can_Init_Flags = _CANSPI_CONFIG_SAMPLE_THRICE & // form
value to be used
_CANSPI_CONFIG_PHSEG2_PRG_ON &// with CANSPIInit
_CANSPI_CONFIG_XTD_MSG &
_CANSPI_CONFIG_DBL_BUFFER_ON &
_CANSPI_CONFIG_VALID_XTD_MSG;
SPI1_Init();
Spi_Rd_Ptr = SPI1_Read; //
pass pointer to SPI Read function of used SPI module
SPI1_Init(); // initialize SPI1 module
CANSPIInitialize(1,3,3,3,1,Can_Init_Flags); //
initialize external CANSPI module
CANSPISetOperationMode(_CANSPI_MODE_CONFIG,0xFF); //
set CONFIGURATION mode
CANSPISetMask(_CANSPI_MASK_B1,-1,_CANSPI_CONFIG_XTD_MSG);
// set all mask1 bits to ones
CANSPISetMask(_CANSPI_MASK_B2,-1,_CANSPI_CONFIG_XTD_MSG);
// set all mask2 bits to ones
CANSPISetFilter(_CANSPI_FILTER_B2_F4,3,_CANSPI_CONFIG_XTD_MSG);
// set id of filter B1_F1 to 3
CANSPISetOperationMode(_CANSPI_MODE_NORMAL,0xFF); //
set NORMAL mode
RxTx_Data[0] = 9; // set initial data to be sent
Tx_ID = 12111; // set transmit ID
CANSPIWrite(Tx_ID, RxTx_Data, 1, Can_Send_Flags); //
send initial message
while(1) {
// endless loop
Msg_Rcvd = CANSPIRead(&Rx_ID , RxTx_Data , &Rx_Data_Len,
&Can_Rcv_Flags); // receive message
if ((Rx_ID == 3u) && Msg_Rcvd) {
// if message received check id
PORTC = RxTx_Data[0];
// id correct, output data at PORTC
RxTx_Data[0]++ ;
// increment received data
Delay_ms(10);
CANSPIWrite(Tx_ID, RxTx_Data, 1, Can_Send_Flags);
// send incremented data back
}
}
}
248
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroC PRO for AVR
CHAPTER 6