Datasheet
Code for the second CANSPI node:
unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags; // can
flags
unsigned char Rx_Data_Len; // received data length in bytes
char RxTx_Data[8]; // can rx/tx data buffer
char Msg_Rcvd; // reception flag
long Tx_ID, Rx_ID; // can rx and tx ID
// CANSPI module connections
sbit CanSpi_CS at PORTB.B0;
sbit CanSpi_CS_Direction at DDRB.B0;
sbit CanSpi_Rst at PORTB.B2;
sbit CanSpi_Rst_Direction at DDRB.B2;
// End CANSPI module connections
void main() {
PORTC = 0; // clear PORTC
DDRC = 255; // set PORTC as output
Can_Init_Flags = 0; //
Can_Send_Flags = 0; // clear flags
Can_Rcv_Flags = 0; //
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 &//orm 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 &
_CANSPI_CONFIG_LINE_FILTER_OFF;
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 exter-
nal CANSPI module
CANSPISetOperationMode(_CANSPI_MODE_CONFIG,0xFF);//set CONFIGURA-
TION 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
249
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroC PRO for AVR
CHAPTER 6