User manual

276
mikoBasic PRO for dsPIC30/33 and PIC24
MikroElektronika
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
ADPCFG = 0xFFFF ‘ Congure AN pins as digital I/O
PORTB = 0 ‘ clear PORTB
TRISB = 0 ‘ set PORTB as output
Can_Init_Flags = 0 ‘
Can_Send_Flags = 0 ‘ clear ags
Can_Rcv_Flags = 0 ‘