With this program you can configure and run a CAN compatible (also LSS protocol compatible) motor through the mbed\'s CANbus. Further more it gives a basic template that lets you create your own CAN messages. I\'ve implemented a configuration and a running example that the program runs through. Also there\'s 2 kinds of loops it can go into after it\'s ran through it\'s configuration and/or speed setting. It can continuously ask for the motor\'s status (node guarding kind of thing) OR it can continuously ask for the motor\'s position. Make sure you have a if, (elsif), else structure so the counter doesn\'t run out of control. I\'ve tried to put as many comments in as I could. I hope it helps you in understanding the basics of CAN and running devices. I\'m new to it myself, so any critisism is welcome. Enjoy.

Dependencies:   mbed

Committer:
OTBsolar
Date:
Mon Feb 14 13:26:46 2011 +0000
Revision:
1:3759c5f6cf76
Parent:
0:af731d8a8d2c
V1.0: My motor runs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
OTBsolar 1:3759c5f6cf76 1
OTBsolar 1:3759c5f6cf76 2
OTBsolar 0:af731d8a8d2c 3 #include "mbed.h"
OTBsolar 0:af731d8a8d2c 4 #include "CAN.h"
OTBsolar 0:af731d8a8d2c 5
OTBsolar 0:af731d8a8d2c 6 Ticker ticker;
OTBsolar 0:af731d8a8d2c 7 DigitalOut led1(LED1);
OTBsolar 0:af731d8a8d2c 8 DigitalOut led2(LED2);
OTBsolar 1:3759c5f6cf76 9 CAN can1(p9, p10); // rd, td Transmitter
OTBsolar 1:3759c5f6cf76 10 CAN can2(p30, p29); // rd, td Monitor
OTBsolar 0:af731d8a8d2c 11
OTBsolar 0:af731d8a8d2c 12 int counter = 0;
OTBsolar 0:af731d8a8d2c 13 char data[8];
OTBsolar 0:af731d8a8d2c 14
OTBsolar 1:3759c5f6cf76 15 //***************void send is the data you are sending**************
OTBsolar 1:3759c5f6cf76 16 void send() {
OTBsolar 0:af731d8a8d2c 17
OTBsolar 1:3759c5f6cf76 18 //-------------------------CONFIGURATION-----------------------------
OTBsolar 1:3759c5f6cf76 19 // Send this part if you want to configure your LSS compatible motor!
OTBsolar 1:3759c5f6cf76 20 // Read more about the LSS protocol for more information.
OTBsolar 1:3759c5f6cf76 21 // Don't forget to include an "else {}" part.(scroll down some)
OTBsolar 1:3759c5f6cf76 22
OTBsolar 1:3759c5f6cf76 23 /*if(counter==0) {
OTBsolar 0:af731d8a8d2c 24 //--------Global Start nodes
OTBsolar 0:af731d8a8d2c 25 data[0] = (char)(0x01); // NMT Start RemoteNode
OTBsolar 0:af731d8a8d2c 26 data[1] = (char)(0x00); // Global
OTBsolar 0:af731d8a8d2c 27 data[2] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 28 data[3] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 29 data[4] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 30 data[5] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 31 data[6] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 32 data[7] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 33 if(can1.write(CANMessage(0000,data,2))) {
OTBsolar 0:af731d8a8d2c 34 printf("Startup sent \n");
OTBsolar 0:af731d8a8d2c 35 }
OTBsolar 0:af731d8a8d2c 36 led1 = !led1;
OTBsolar 0:af731d8a8d2c 37 counter ++;
OTBsolar 0:af731d8a8d2c 38 }
OTBsolar 0:af731d8a8d2c 39 else if(counter==1) {
OTBsolar 1:3759c5f6cf76 40 //--------LSS Configure Mode
OTBsolar 0:af731d8a8d2c 41 data[0] = (char)(0x04); // LSS Set Mode
OTBsolar 1:3759c5f6cf76 42 data[1] = (char)(0x01); // Mode configure
OTBsolar 0:af731d8a8d2c 43 data[2] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 44 data[3] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 45 data[4] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 46 data[5] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 47 data[6] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 48 data[7] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 49 if(can1.write(CANMessage(2021,data,2))) {
OTBsolar 1:3759c5f6cf76 50 printf("LSS Configure mode sent \n");
OTBsolar 0:af731d8a8d2c 51 }
OTBsolar 0:af731d8a8d2c 52 led1 = !led1;
OTBsolar 0:af731d8a8d2c 53 counter ++;
OTBsolar 0:af731d8a8d2c 54 }
OTBsolar 0:af731d8a8d2c 55 else if(counter==2) {
OTBsolar 0:af731d8a8d2c 56 //--------LSS Set Node_ID
OTBsolar 0:af731d8a8d2c 57 data[0] = (char)(0x11); // LSS Set Node_ID
OTBsolar 1:3759c5f6cf76 58 data[1] = (char)(0x03); // to Node_ID: 03
OTBsolar 0:af731d8a8d2c 59 data[2] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 60 data[3] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 61 data[4] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 62 data[5] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 63 data[6] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 64 data[7] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 65 if(can1.write(CANMessage(2021,data,2))) {
OTBsolar 1:3759c5f6cf76 66 printf("LSS Set Node_ID to 0x03 sent \n");
OTBsolar 0:af731d8a8d2c 67 }
OTBsolar 0:af731d8a8d2c 68 led1 = !led1;
OTBsolar 0:af731d8a8d2c 69 counter ++;
OTBsolar 0:af731d8a8d2c 70 }
OTBsolar 0:af731d8a8d2c 71 else if(counter==3) {
OTBsolar 0:af731d8a8d2c 72 //--------LSS Set Baudrate
OTBsolar 0:af731d8a8d2c 73 data[0] = (char)(0x13); // LSS Set Baudrate
OTBsolar 0:af731d8a8d2c 74 data[1] = (char)(0x00); //
OTBsolar 0:af731d8a8d2c 75 data[2] = (char)(0x02); // Baudrate index (500kb/s)
OTBsolar 0:af731d8a8d2c 76 data[3] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 77 data[4] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 78 data[5] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 79 data[6] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 80 data[7] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 81 if(can1.write(CANMessage(2021,data,3))) {
OTBsolar 1:3759c5f6cf76 82 printf("LSS Set Baudrate sent \n");
OTBsolar 0:af731d8a8d2c 83 }
OTBsolar 0:af731d8a8d2c 84 led1 = !led1;
OTBsolar 0:af731d8a8d2c 85 counter ++;
OTBsolar 0:af731d8a8d2c 86 }
OTBsolar 1:3759c5f6cf76 87 else if(counter==4) {
OTBsolar 1:3759c5f6cf76 88 //--------LSS Save Config
OTBsolar 1:3759c5f6cf76 89 data[0] = (char)(0x17); // LSS Save Config
OTBsolar 1:3759c5f6cf76 90 data[1] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 91 data[2] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 92 data[3] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 93 data[4] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 94 data[5] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 95 data[6] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 96 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 97 if(can1.write(CANMessage(2021,data,3))) {
OTBsolar 1:3759c5f6cf76 98 printf("LSS Save Config sent \n");
OTBsolar 0:af731d8a8d2c 99 }
OTBsolar 0:af731d8a8d2c 100 led1 = !led1;
OTBsolar 0:af731d8a8d2c 101 counter ++;
OTBsolar 1:3759c5f6cf76 102 }
OTBsolar 1:3759c5f6cf76 103 else if(counter==6) {
OTBsolar 0:af731d8a8d2c 104 //--------LSS Operation Mode
OTBsolar 0:af731d8a8d2c 105 data[0] = (char)(0x04); // LSS Set Mode
OTBsolar 0:af731d8a8d2c 106 data[1] = (char)(0x00); // Mode operation
OTBsolar 0:af731d8a8d2c 107 data[2] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 108 data[3] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 109 data[4] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 110 data[5] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 111 data[6] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 112 data[7] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 113 if(can1.write(CANMessage(2021,data,2))) {
OTBsolar 0:af731d8a8d2c 114 printf("LSS Operation mode sent \n");
OTBsolar 0:af731d8a8d2c 115 }
OTBsolar 0:af731d8a8d2c 116 led1 = !led1;
OTBsolar 0:af731d8a8d2c 117 counter ++;
OTBsolar 1:3759c5f6cf76 118 }*/
OTBsolar 1:3759c5f6cf76 119 //-----------------------END OF CONFIGURATION---------------------
OTBsolar 1:3759c5f6cf76 120
OTBsolar 1:3759c5f6cf76 121
OTBsolar 1:3759c5f6cf76 122 //-----------------------Running your motor-----------------------
OTBsolar 1:3759c5f6cf76 123 // Look up how to make your motor run.
OTBsolar 1:3759c5f6cf76 124 // This example works on a FAULHABER 3242 G024 BX4 CC
OTBsolar 1:3759c5f6cf76 125 // Don't forget to include an "else {}". Scroll down a bit.
OTBsolar 1:3759c5f6cf76 126
OTBsolar 1:3759c5f6cf76 127 if(counter==0) {
OTBsolar 1:3759c5f6cf76 128 //--------Start node 3--------
OTBsolar 1:3759c5f6cf76 129 data[0] = (char)(0x01); // Start Node
OTBsolar 1:3759c5f6cf76 130 data[1] = (char)(0x03); // ID 03
OTBsolar 1:3759c5f6cf76 131 data[2] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 132 data[3] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 133 data[4] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 134 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 135 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 136 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 137 if(can1.write(CANMessage(0000,data,2))) {
OTBsolar 1:3759c5f6cf76 138 printf("Start Node_ID 03 sent \n");
OTBsolar 1:3759c5f6cf76 139 }
OTBsolar 1:3759c5f6cf76 140 led1 = !led1;
OTBsolar 1:3759c5f6cf76 141 counter ++;
OTBsolar 0:af731d8a8d2c 142 }
OTBsolar 1:3759c5f6cf76 143 else if(counter==1) {
OTBsolar 1:3759c5f6cf76 144 //--------FAULHABER Mode
OTBsolar 1:3759c5f6cf76 145 data[0] = (char)(0xFD); // FAULHABER MODE
OTBsolar 1:3759c5f6cf76 146 data[1] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 147 data[2] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 148 data[3] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 149 data[4] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 150 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 151 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 152 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 153 if(can1.write(CANMessage(771,data,5))) {
OTBsolar 1:3759c5f6cf76 154 printf("Operation mode: FAULHABER sent \n");
OTBsolar 1:3759c5f6cf76 155 }
OTBsolar 1:3759c5f6cf76 156 led1 = !led1;
OTBsolar 1:3759c5f6cf76 157 counter ++;
OTBsolar 1:3759c5f6cf76 158 }
OTBsolar 1:3759c5f6cf76 159 else if(counter==2) {
OTBsolar 1:3759c5f6cf76 160 //--------Switch ON using FAULHABER
OTBsolar 1:3759c5f6cf76 161 data[0] = (char)(0x0F); // FAULHABER MODE
OTBsolar 1:3759c5f6cf76 162 data[1] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 163 data[2] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 164 data[3] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 165 data[4] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 166 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 167 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 168 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 169 if(can1.write(CANMessage(771,data,5))) {
OTBsolar 1:3759c5f6cf76 170 printf("Switch ON sent \n");
OTBsolar 1:3759c5f6cf76 171 }
OTBsolar 1:3759c5f6cf76 172 led1 = !led1;
OTBsolar 1:3759c5f6cf76 173 counter ++;
OTBsolar 1:3759c5f6cf76 174 }
OTBsolar 1:3759c5f6cf76 175 else if(counter==3) {
OTBsolar 1:3759c5f6cf76 176 //--------Speed setting
OTBsolar 1:3759c5f6cf76 177 data[0] = (char)(0x93); // FAULHABER MODE
OTBsolar 1:3759c5f6cf76 178 data[1] = (char)(0xF4);
OTBsolar 1:3759c5f6cf76 179 data[2] = (char)(0x01);
OTBsolar 1:3759c5f6cf76 180 data[3] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 181 data[4] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 182 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 183 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 184 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 185 if(can1.write(CANMessage(771,data,5))) {
OTBsolar 1:3759c5f6cf76 186 printf("Speed = 500RPM sent \n");
OTBsolar 1:3759c5f6cf76 187 }
OTBsolar 1:3759c5f6cf76 188 led1 = !led1;
OTBsolar 1:3759c5f6cf76 189 counter ++;
OTBsolar 1:3759c5f6cf76 190 }
OTBsolar 1:3759c5f6cf76 191 else if(counter==4) {
OTBsolar 1:3759c5f6cf76 192 //--------Datarequest setting
OTBsolar 1:3759c5f6cf76 193 data[0] = (char)(0x40); // FAULHABER MODE
OTBsolar 1:3759c5f6cf76 194 data[1] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 195 data[2] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 196 data[3] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 197 data[4] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 198 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 199 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 200 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 201 if(can1.write(CANMessage(771,data,5))) {
OTBsolar 1:3759c5f6cf76 202 printf("Requesttype: position sent \n");
OTBsolar 1:3759c5f6cf76 203 }
OTBsolar 1:3759c5f6cf76 204 led1 = !led1;
OTBsolar 1:3759c5f6cf76 205 counter ++;
OTBsolar 1:3759c5f6cf76 206 }
OTBsolar 1:3759c5f6cf76 207 //--------------------End run motor--------------------------------
OTBsolar 1:3759c5f6cf76 208
OTBsolar 1:3759c5f6cf76 209
OTBsolar 1:3759c5f6cf76 210 //---------------------Request Position----------------------------
OTBsolar 1:3759c5f6cf76 211 // Run this one to request the position of my motor.
OTBsolar 1:3759c5f6cf76 212 // Check the datasheet of your motor to confirm if this works.
OTBsolar 0:af731d8a8d2c 213 else {
OTBsolar 1:3759c5f6cf76 214 //--------Positie opvragen
OTBsolar 1:3759c5f6cf76 215 data[0] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 216 data[1] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 217 data[2] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 218 data[3] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 219 data[4] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 220 data[5] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 221 data[6] = (char)(0x00);
OTBsolar 0:af731d8a8d2c 222 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 223 if(can1.write(CANMessage(643))) {
OTBsolar 1:3759c5f6cf76 224 printf("Positie check sent \n");
OTBsolar 1:3759c5f6cf76 225 }
OTBsolar 1:3759c5f6cf76 226 led1 = !led1;
OTBsolar 1:3759c5f6cf76 227 counter = 10;
OTBsolar 1:3759c5f6cf76 228 }
OTBsolar 1:3759c5f6cf76 229 //--------------------End request position-------------------
OTBsolar 1:3759c5f6cf76 230
OTBsolar 1:3759c5f6cf76 231
OTBsolar 1:3759c5f6cf76 232 //---------------------Request Status--------------------------
OTBsolar 1:3759c5f6cf76 233 // Run this one to request the status of my motor.
OTBsolar 1:3759c5f6cf76 234 // Check the datasheet of your motor to confirm if this works.
OTBsolar 1:3759c5f6cf76 235 /* else {
OTBsolar 1:3759c5f6cf76 236 //--------Status check
OTBsolar 1:3759c5f6cf76 237 data[0] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 238 data[1] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 239 data[2] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 240 data[3] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 241 data[4] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 242 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 243 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 244 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 245 if(can1.write(CANMessage(387))) {
OTBsolar 0:af731d8a8d2c 246 printf("Status check sent \n");
OTBsolar 0:af731d8a8d2c 247 }
OTBsolar 0:af731d8a8d2c 248 led1 = !led1;
OTBsolar 0:af731d8a8d2c 249 counter = 10;
OTBsolar 1:3759c5f6cf76 250 }*/
OTBsolar 1:3759c5f6cf76 251 //------------------End request status------------------
OTBsolar 1:3759c5f6cf76 252
OTBsolar 1:3759c5f6cf76 253
OTBsolar 1:3759c5f6cf76 254 //---------Example------------------
OTBsolar 1:3759c5f6cf76 255
OTBsolar 1:3759c5f6cf76 256 /*if(counter==0) {
OTBsolar 1:3759c5f6cf76 257 //--------8 bytes of data
OTBsolar 1:3759c5f6cf76 258 data[0] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 259 data[1] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 260 data[2] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 261 data[3] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 262 data[4] = (char)(0xFF);
OTBsolar 1:3759c5f6cf76 263 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 264 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 265 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 266 if(can1.write(CANMessage(2021,data,8))) {
OTBsolar 1:3759c5f6cf76 267 printf("8bytes test sent \n");
OTBsolar 1:3759c5f6cf76 268 }
OTBsolar 1:3759c5f6cf76 269 led1 = !led1;
OTBsolar 1:3759c5f6cf76 270 counter ++;
OTBsolar 1:3759c5f6cf76 271 }
OTBsolar 1:3759c5f6cf76 272 else {
OTBsolar 1:3759c5f6cf76 273 //--------2 bytes of data
OTBsolar 1:3759c5f6cf76 274 data[0] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 275 data[1] = (char)(0xAA);
OTBsolar 1:3759c5f6cf76 276 data[2] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 277 data[3] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 278 data[4] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 279 data[5] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 280 data[6] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 281 data[7] = (char)(0x00);
OTBsolar 1:3759c5f6cf76 282 if(can1.write(CANMessage(2021,data,2))) {
OTBsolar 1:3759c5f6cf76 283 printf("2bytes test sent \n");
OTBsolar 1:3759c5f6cf76 284 }
OTBsolar 1:3759c5f6cf76 285 led1 = !led1;
OTBsolar 1:3759c5f6cf76 286 counter = 10;
OTBsolar 1:3759c5f6cf76 287 }*/
OTBsolar 1:3759c5f6cf76 288 //-------End of example--------------
OTBsolar 0:af731d8a8d2c 289 }
OTBsolar 1:3759c5f6cf76 290 //*************************************************************
OTBsolar 0:af731d8a8d2c 291
OTBsolar 1:3759c5f6cf76 292
OTBsolar 1:3759c5f6cf76 293 //**********The main program*********************
OTBsolar 0:af731d8a8d2c 294 int main() {
OTBsolar 1:3759c5f6cf76 295 //----------------Initialization-----------------------
OTBsolar 0:af731d8a8d2c 296 can2.frequency(500000); //500kbit/s
OTBsolar 0:af731d8a8d2c 297 can1.frequency(500000);
OTBsolar 1:3759c5f6cf76 298 //can2.monitor(1); //Works without this, in my case.
OTBsolar 0:af731d8a8d2c 299 ticker.attach(&send, 1); //Send every second
OTBsolar 1:3759c5f6cf76 300 CANMessage msg;
OTBsolar 1:3759c5f6cf76 301 //-----------------------------------------------------
OTBsolar 1:3759c5f6cf76 302
OTBsolar 1:3759c5f6cf76 303 //---------------The read out----------------------
OTBsolar 0:af731d8a8d2c 304 while(1) {
OTBsolar 0:af731d8a8d2c 305 if(can2.read(msg)) {
OTBsolar 0:af731d8a8d2c 306 printf("Message read with ID: %d\n", msg.id);
OTBsolar 0:af731d8a8d2c 307 printf("Data: %x", msg.data[0]);
OTBsolar 0:af731d8a8d2c 308 printf(" %x", msg.data[1]);
OTBsolar 0:af731d8a8d2c 309 printf(" %x", msg.data[2]);
OTBsolar 0:af731d8a8d2c 310 printf(" %x", msg.data[3]);
OTBsolar 0:af731d8a8d2c 311 printf(" %x", msg.data[4]);
OTBsolar 0:af731d8a8d2c 312 printf(" %x", msg.data[5]);
OTBsolar 0:af731d8a8d2c 313 printf(" %x", msg.data[6]);
OTBsolar 0:af731d8a8d2c 314 printf(" %x\n", msg.data[7]);
OTBsolar 0:af731d8a8d2c 315 printf("Length: %d", msg.len);
OTBsolar 0:af731d8a8d2c 316 printf(", Type: %d", msg.type);
OTBsolar 0:af731d8a8d2c 317 printf(", Format: %d\n\n", msg.format);
OTBsolar 1:3759c5f6cf76 318 led2 = !led2; //Blink!
OTBsolar 0:af731d8a8d2c 319 }
OTBsolar 0:af731d8a8d2c 320 }
OTBsolar 1:3759c5f6cf76 321 //----------------------------------------------------
OTBsolar 1:3759c5f6cf76 322 }
OTBsolar 1:3759c5f6cf76 323 //*********************************************************