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.
main.cpp@1:3759c5f6cf76, 2011-02-14 (annotated)
- 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?
User | Revision | Line number | New 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 | //********************************************************* |