User manual
256
mikoBasic PRO for PIC32
MikroElektronika
CANSPISetMask(_CANSPI_MASK_B2,-1,_CANSPI_CONFIG_XTD_MSG) ‘ set all mask2 bits to ones
CANSPISetFilter(_CANSPI_FILTER_B2_F4,ID_2nd,_CANSPI_CONFIG_XTD_MSG) ‘ set id of lter
B2_F4 to 2nd node ID
CANSPISetOperationMode(_CANSPI_MODE_NORMAL,0xFF) ‘ set NORMAL mode
‘ Set initial data to be sent
RxTx_Data[0] = 9
CANSPIWrite(ID_1st, RxTx_Data, 1, Can_Send_Flags) ‘ send initial message
while (TRUE) ‘ endless loop
Msg_Rcvd = CANSPIRead(Rx_ID , RxTx_Data , Rx_Data_Len, Can_Rcv_Flags) ‘ receive
message
if ((Rx_ID = ID_2nd) and Msg_Rcvd) then ‘ if message received check id
PORTB = RxTx_Data[0] ‘ id correct, output data at PORTD
Inc(RxTx_Data[0]) ‘ increment received data
Delay_ms(10)
CANSPIWrite(ID_1st, RxTx_Data, 1, Can_Send_Flags) ‘ send incremented data back
end if
wend
end.
Code for the second CANSPI node:
Copy Code To Clipboard
program Can_Spi_2nd
const ID_1st as longint = 12111
const ID_2nd as longint = 3
dim Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags as word ‘ can ags
Rx_Data_Len as word ‘ received data length in bytes
RxTx_Data as byte[8] ‘ can rx/tx data buffer
Msg_Rcvd as byte ‘ reception ag
Tx_ID, Rx_ID as longword ‘ can rx and tx ID
‘ CANSPI module connections
dim CanSpi_CS as sbit at LATF0_bit
CanSpi_CS_Direction as sbit at TRISF0_bit
CanSpi_Rst as sbit at LATF1_bit
CanSpi_Rst_Direction as sbit at TRISF1_bit
‘ End CANSPI module connections
main:
CHECON = 0x32
AD1PCFG = 0xFFFF ‘ congure AN pins as digital I/O
PORTB = 0 ‘ clear PORTB
TRISB = 0 ‘ set PORTB as output