Dependencies: mbed SpeedController2_25 ros_lib_kinetic
Diff: can/can.cpp
- Revision:
- 4:46c10d34af27
- Child:
- 5:fe91d31db27e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/can/can.cpp Sat Nov 16 06:28:18 2019 +0000 @@ -0,0 +1,103 @@ +#include "mbed.h" +#include "can.h" + +CAN can1(p30,p29); +Ticker can_ticker; //can用ticker + +DigitalOut cansend_led(LED1); //cansend -> on +DigitalOut canread_led(LED2); //canread -> on + +double mt_out1=0.0,mt_out2=0.0; + +int t1_r=0, T1=0; //動作番号(受け取った値、送信する値(int型)) + +void can_readsend() +{ + CANMessage msg; + + + if(can1.read(msg)) { + //printf(" CAN success\n\r"); + if(msg.id == 4) { + mt_out1 = 1/(double)200*(short)((msg.data[0]<<8) | msg.data[1]); + mt_out2 = 1/(double)200*(short)((msg.data[2]<<8) | msg.data[3]); + //mt_out1 = 1/(double)50*(short)((msg.data[4]<<8) | msg.data[5]); + //mt_out2 = 1/(double)50*(short)((msg.data[6]<<8) | msg.data[7]); + //debug_printf("usw_data1 = %f\n\r",usw_data1); + printf("mt_out1 = %f,mt_out2 = %f\n\r",mt_out1,mt_out2); + } + // if(msg.id == 7){ +// mt_out2 = 1/(double)50*(short)((msg.data[0]<<8) | msg.data[1]); +// printf("id = 5 mt_out2 = %f, data[0] = %d, data[1] = %d\n\r",mt_out2,msg.data[0],msg.data[1]); +// } + + } else { + canread_led = 0; + printf("fale\n\r"); + } + + + // can_ashileddata[1] = T1; //動作番号(id節約のため、can_ashileddata[]と一緒に送る) + +// can_ashileddata2[0] = m1 >> 8; +// can_ashileddata2[1] = m1 &255; +// +// can_ashileddata3[0] = m1 >> 8; +// can_ashileddata3[1] = m1 &255; +// +// can_ashileddata4[0] = m1 >> 8; +// can_ashileddata4[1] = m1 &255; +// +// can_ashileddata5[0] = m1 >> 8; +// can_ashileddata5[1] = m1 &255; +// +// if(can1.write(CANMessage(4,can_ashileddata2,2))) { //IDを4にして送信 +// cansend_led = 1; +// } else { +// cansend_led = 0; +// } +// +// if(can1.write(CANMessage(4,can_ashileddata3,2))) { //IDを4にして送信 +// cansend_led = 1; +// } else { +// cansend_led = 0; +// } +// +// if(can1.write(CANMessage(4,can_ashileddata4,2))) { //IDを4にして送信 +// cansend_led = 1; +// } else { +// cansend_led = 0; +// } +// +// if(can1.write(CANMessage(4,can_ashileddata5,2))) { //IDを4にして送信 +// cansend_led = 1; +// } else { +// cansend_led = 0; +// } + + /*if(t1_r > T1) { + T1 = t1_r; + }*/ +} + +void can_start() +{ + + while(1) { + + CANMessage msg; + +// debug_printf("wait\n\r"); + printf("wait\n\r"); + wait(0.1); + if(can1.read(msg)) { + break; + } + } +} + +void UserLoopSetting_can() +{ + can1.frequency(1000000); + can_ticker.attach(&can_readsend,0.01); //遅かったら早める +} \ No newline at end of file