ikarashiMDCslaveの改良(?)版 スピード制御の分解能が2byte
Dependencies: mbed SoftPWM MotorSMLAP
Diff: main.cpp
- 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;