User manual

260
mikoBasic PRO for dsPIC30/33 and PIC24
MikroElektronika
RxTx_Data[0] = 9
CAN1Initialize(1,3,3,3,1,Can_Init_Flags) ‘ initialize CAN
CAN1SetOperationMode(_CAN_MODE_CONFIG,0xFF) ‘ set CONFIGURATION mode
CAN1SetMask(_CAN_MASK_B1, -1, _CAN_CONFIG_MATCH_MSG_TYPE and _CAN_CONFIG_XTD_MSG)
‘ set all mask1 bits to ones
CAN1SetMask(_CAN_MASK_B2, -1, _CAN_CONFIG_MATCH_MSG_TYPE and _CAN_CONFIG_XTD_MSG)
‘ set all mask2 bits to ones
CAN1SetFilter(_CAN_FILTER_B2_F3,ID_2nd,_CAN_CONFIG_XTD_MSG) set id of lter B2_F3
to 2nd node ID
CAN1SetOperationMode(_CAN_MODE_NORMAL,0xFF) ‘ set NORMAL mode
CAN1Write(ID_1st, RxTx_Data, 1, Can_Send_Flags)
while TRUE
Msg_Rcvd = CAN1Read(Rx_ID , RxTx_Data , Rx_Data_Len, Can_Rcv_Flags)
if ((Rx_ID = ID_2nd) and (Msg_Rcvd <> 0)) <> 0 then
PORTB = RxTx_Data[0] ‘ output data at PORTB
RxTx_Data[0] = RxTx_Data[0] + 1
Delay_ms(10)
CAN1Write(ID_1st, RxTx_Data, 1, Can_Send_Flags) ‘ send incremented data back
end if
wend
end.
Code for the second CAN node:
Copy Code To Clipboard
program Can_2nd
dim Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags, Rx_Data_Len as word
RxTx_Data as byte[8]
Rx_ID as longint
Msg_Rcvd as word
const ID_1st as longint = 12111
const ID_2nd as longint = 3 ‘ node IDs
main:
ADPCFG = 0xFFFF
PORTB = 0
TRISB = 0
Can_Init_Flags = 0
Can_Send_Flags = 0
Can_Rcv_Flags = 0