User manual

302
mikoC PRO for dsPIC
MikroElektronika
Library Example
This is a simple demonstration of CANSPI Library routines usage. First node initiates the communication with the
second node by sending some data to its address. The second node responds by sending back the data incremented
by 1. First node then does the same and sends incremented data back to second node, etc.
Code for the rst CANSPI node:
Copy Code To Clipboard
sbit CanSpi_CS at RF0_bit; // Chip select line
sbit CanSpi_Rst at RF1_bit; // Reset line
sbit CanSpi_CS_Direction at TRISF0_bit; // Direction of the Chip Select pin
sbit CanSpi_Rst_Direction at TRISF1_bit; // Direction of the Reset pin
unsigned int Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags; // Can ags
unsigned int Rx_Data_Len; // Received data length in bytes
char RxTx_Data[8]; // Can rx/tx data buffer
char Msg_Rcvd; // Reception ag
unsigned long Tx_ID, Rx_ID; // Can rx and tx ID
void main() {
ADPCFG = 0xFFFF;
PORTB = 0;
TRISB = 0;
Can_Init_Flags = 0; //
Can_Send_Flags = 0; // Clear ags
Can_Rcv_Flags = 0; //
Can_Send_Flags = _CANSPI_TX_PRIORITY_0 & // Form value to be used
_CANSPI_TX_XTD_FRAME & // with CANSPI1Write
_CANSPI_TX_NO_RTR_FRAME;
Can_Init_Flags = _CANSPI_CONFIG_SAMPLE_THRICE & // Form value to be used
_CANSPI_CONFIG_PHSEG2_PRG_ON & // with CANSPI1Init
_CANSPI_CONFIG_XTD_MSG &
_CANSPI_CONFIG_DBL_BUFFER_ON &
_CANSPI_CONFIG_VALID_XTD_MSG;
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 lter
B1_F1 to 3