ikarashiMDCslaveの改良(?)版 スピード制御の分解能が2byte

Dependencies:   mbed SoftPWM MotorSMLAP

Revision:
11:3ef351087c94
Parent:
10:5f932239b8a5
Child:
12:3a734542a2b3
--- a/main.cpp	Fri Aug 24 10:25:58 2018 +0900
+++ b/main.cpp	Tue Nov 20 07:52:21 2018 +0000
@@ -13,6 +13,7 @@
 };
 Serial rs485(RS485_TX,RS485_RX);
 Serial serial(UART1_TX,UART1_RX);
+CAN can(CAN_RX, CAN_TX);
 
 DigitalOut RSControl(RS485_CS);
 bool addrChecked;
@@ -27,11 +28,24 @@
 //uint8_t addr = 2;
 SoftPWM beep(BUZER);
 bool brakeing[4] = {false};
+bool canRecieved = false;
 
 int mode[4] = {0};
 
 std::vector<unsigned char> buf;
+uint8_t canbuf[3];
+CANMessage msg;
 
+void canRxIt()
+{
+    if(can.read(msg))
+    {
+        canbuf[0] = msg.data[0];
+        canbuf[1] = msg.data[1];
+        canbuf[2] = msg.data[2];
+        canRecieved = true;
+    }
+}
 
 void forceStop()
 {
@@ -96,6 +110,7 @@
 
     unsigned char tmp[3] = {0};
     addrChecked=false,headerRecieved=false;
+    can.attach(&canRxIt, CAN::RxIrq);
     //motor[0].setMotorSpeed(0);
     rs485.baud(115200);
     serial.baud(115200);
@@ -119,6 +134,15 @@
                 debugLED0 = false;
             }
         }
+        if(canRecieved)
+        {
+            tmp[0] = canbuf[0];
+            tmp[1] = canbuf[1];
+            tmp[2] = canbuf[2];
+            processData(tmp);
+            debugLED0 = !debugLED0;
+            canRecieved = false;
+        }
         if(estop)
             forceStop();
         beep = estop;