2月25日
Dependencies: uw_28015 mbed ros_lib_kinetic move4wheel2 EC CruizCore_R6093U CruizCore_R1370P
can.cpp
00001 #include "mbed.h" 00002 #include "PathFollowing.h" 00003 #include "movement.h" 00004 #include "manual.h" 00005 #include "can.h" 00006 00007 CAN can1(p30,p29); 00008 Ticker can_ticker; //can用ticker 00009 00010 DigitalOut cansend_led(LED1); //cansend -> on 00011 DigitalOut canread_led(LED2); //canread -> on 00012 00013 int t1_r=0, T1=0; //動作番号(受け取った値、送信する値(int型)) 00014 int k = 0; 00015 00016 void can_readsend() 00017 { 00018 CANMessage msg; 00019 if(can1.read(msg)) { 00020 //printf(" CAN success\n\r"); 00021 if(msg.id == 2) { 00022 t1_r = msg.data[0]; 00023 //printf("main T1 = %d t1_r = %d\n\r",T1,t1_r); 00024 } 00025 00026 } else { 00027 canread_led = 0; 00028 //printf("fale\n\r"); 00029 } 00030 /* if(k > 100){ 00031 printf("T1 in can_read = %d\n\r",T1); 00032 k = 0; 00033 } 00034 k++;*/ 00035 can_num[0] = T1; //動作番号(id節約のため、can_ashileddata[]と一緒に送る) 00036 //can_num[0] = 1; 00037 00038 can_ashileddata2[0] = m1 >> 8; 00039 can_ashileddata2[1] = m1 &255; 00040 00041 can_ashileddata2[2] = m2 >> 8; 00042 can_ashileddata2[3] = m2 &255; 00043 00044 can_ashileddata2[4] = m3 >> 8; 00045 can_ashileddata2[5] = m3 &255; 00046 00047 can_ashileddata2[6] = m4 >> 8; 00048 can_ashileddata2[7] = m4 &255; 00049 00050 00051 if(can1.write(CANMessage(1,can_num,1))) { 00052 cansend_led = 1; 00053 } 00054 00055 if(can1.write(CANMessage(4,can_ashileddata2,8))) { //IDを4にして送信 00056 //printf("success : %d \n\r",m1); 00057 cansend_led = 1; 00058 } 00059 00060 if(t1_r > T1) { 00061 T1 = t1_r; 00062 } 00063 00064 } 00065 00066 void can_start() 00067 { 00068 00069 while(1) { 00070 00071 CANMessage msg; 00072 00073 // debug_printf("wait\n\r"); 00074 printf("wait\n\r"); 00075 wait(0.1); 00076 if(can1.read(msg)) { 00077 break; 00078 } 00079 } 00080 } 00081 00082 void UserLoopSetting_can() 00083 { 00084 can1.frequency(1000000); 00085 can_ticker.attach(&can_readsend,0.01); //遅かったら早める 00086 }
Generated on Fri Jul 15 2022 09:53:44 by
1.7.2