PLC 16 in / 8 rev / an in-out / CAN
Dependencies: PCAL955x mbed mbed-rtos AT45
src/can.cpp
- Committer:
- Oleg_B
- Date:
- 2021-02-07
- Revision:
- 0:d05a7158dbad
File content as of revision 0:d05a7158dbad:
#include <mbed.h> #include "rtos.h" #include "can.h" #include "ext_vars.h" //-------------хранение полученного сообщения -------------- // // [b1 b2 b3 b4] // ----------------- // r_mess id[0] -> r_mess_data [ 0 1 2 3] - новое сообщение // r_mess id[1] -> r_mess_data [ 4 5 6 7] - новое сообщение // r_mess id[2] -> r_mess_data [ 8 9 10 11] - новое сообщение // r_mess id[3] -> r_mess_data [12 13 14 15] - новое сообщение // r_mess id[4] -> r_mess_data [16 17 18 19] - новое сообщение // r_mess id[5] -> r_mess_data [20 21 22 23] - новое сообщение // r_mess id[6] -> r_mess_data [24 25 26 27] - новое сообщение // r_mess id[7] -> r_mess_data [28 29 30 31] - новое сообщение // r_mess id[8] -> r_mess_data [32 33 34 35] - новое сообщение // r_mess id[9] -> r_mess_data [36 37 38 39] - новое сообщение //--------- очередь сообщений на отправку ------------------ // // [b1 b2 b3 b4] // ----------------- // w_mess id[0] -> w_mess_data [ 0 1 2 3] - новое сообщение // w_mess id[1] -> w_mess_data [ 4 5 6 7] - новое сообщение // w_mess id[2] -> w_mess_data [ 8 9 10 11] - новое сообщение // w_mess id[3] -> w_mess_data [12 13 14 15] - новое сообщение // w_mess id[4] -> w_mess_data [16 17 18 19] - новое сообщение // w_mess id[5] -> w_mess_data [20 21 22 23] - новое сообщение // w_mess id[6] -> w_mess_data [24 25 26 27] - новое сообщение // w_mess id[7] -> w_mess_data [28 29 30 31] - новое сообщение // w_mess id[8] -> w_mess_data [32 33 34 35] - новое сообщение // w_mess id[9] -> w_mess_data [36 37 38 39] - новое сообщение // помещаем в очередь полученное сообщение int can_save_rd(int id, char b1, char b2, char b3, char b4) { int res = 0 ; for(int i=0; i<9; i++){ if( r_mess_id[i]==0 && res==0){ r_mess_id[i] = id; r_mess_data[i*3+i+0] = b1; r_mess_data[i*3+i+1] = b2; r_mess_data[i*3+i+2] = b3; r_mess_data[i*3+i+3] = b4; res = 1; } } return res; } // помещаем в очередь сообщения для отправки int can_save_wr(int id, char b1, char b2, char b3, char b4) { int res = 0 ; for(int i=0; i<9; i++){ if( w_mess_id[i]==0 && res==0){ w_mess_id[i] = id; w_mess_data[i*3+i+0] = b1; w_mess_data[i*3+i+1] = b2; w_mess_data[i*3+i+2] = b3; w_mess_data[i*3+i+3] = b4; res = 1; } } return res; } // выбираем сообщение из очереди для обработки // и помещаем в раб. переменные int can_select_rd() { int res = 0; r_id=0; r_b1=0; r_b2=0; r_b3=0; r_b4=0; for(int i=0; i<9; i++){ if( r_mess_id[i] != 0 && res==0 ) { r_id = r_mess_id[i] ; r_b1 = r_mess_data[i*3+i+0]; r_b2 = r_mess_data[i*3+i+1]; r_b3 = r_mess_data[i*3+i+2]; r_b4 = r_mess_data[i*3+i+3]; r_mess_id[i] = 0 ; res=1; } } return res; } // выбираем сообщение из очереди для отправки // и помещаем в раб. переменные int can_select_wr() { int res = 0; w_id=0; w_b1=0; w_b2=0; w_b3=0; w_b4=0; for(int i=0; i<9; i++){ if( w_mess_id[i] != 0 && res==0 ) { w_id = w_mess_id[i] ; w_b1 = w_mess_data[i*3+i+0]; w_b2 = w_mess_data[i*3+i+1]; w_b3 = w_mess_data[i*3+i+2]; w_b4 = w_mess_data[i*3+i+3]; w_mess_id[i] = 0 ; res=1; } } return res; }