Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:bd7f40902a2b, 2019-02-07 (annotated)
- Committer:
- formulas
- Date:
- Thu Feb 07 11:18:30 2019 +0000
- Revision:
- 1:bd7f40902a2b
- Parent:
- 0:c68d5d7a6e80
- Child:
- 2:acb3ea43a025
Imitator CAN mreze;
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| formulas | 0:c68d5d7a6e80 | 1 | #include "mbed.h" | 
| formulas | 0:c68d5d7a6e80 | 2 | #include "CAN_IDs.h" | 
| formulas | 0:c68d5d7a6e80 | 3 | |
| formulas | 0:c68d5d7a6e80 | 4 | //CAN Identificators | 
| formulas | 0:c68d5d7a6e80 | 5 | #define DTA_1 0x2000 | 
| formulas | 0:c68d5d7a6e80 | 6 | #define DTA_2 0x2001 | 
| formulas | 0:c68d5d7a6e80 | 7 | #define DTA_3 0x2002 | 
| formulas | 0:c68d5d7a6e80 | 8 | #define DTA_4 0x2003 | 
| formulas | 0:c68d5d7a6e80 | 9 | #define DTA_5 0x2004 | 
| formulas | 0:c68d5d7a6e80 | 10 | #define DTA_6 0x2005 | 
| formulas | 0:c68d5d7a6e80 | 11 | // This IDs can be changed as they are our own IDs | 
| formulas | 0:c68d5d7a6e80 | 12 | #define LVDT_FRONT 0x6 | 
| formulas | 0:c68d5d7a6e80 | 13 | #define LVDT_REAR 0x7 | 
| formulas | 0:c68d5d7a6e80 | 14 | #define BRAKES 0x8 | 
| formulas | 1:bd7f40902a2b | 15 | #define DISTANCE_ID 0x9 | 
| formulas | 0:c68d5d7a6e80 | 16 | // If we add some other IDs in the vehicle add them here | 
| formulas | 0:c68d5d7a6e80 | 17 | |
| formulas | 0:c68d5d7a6e80 | 18 | CAN can1(PB_8, PB_9); | 
| formulas | 1:bd7f40902a2b | 19 | Serial pc(USBTX, USBRX); | 
| formulas | 1:bd7f40902a2b | 20 | AnalogIn speed_value(A0); | 
| formulas | 1:bd7f40902a2b | 21 | int speed; | 
| formulas | 0:c68d5d7a6e80 | 22 | char dta1[8]; //DTA1 | 
| formulas | 0:c68d5d7a6e80 | 23 | uint16_t Rpm,TPS, Water_Temp, Air_Temp; | 
| formulas | 0:c68d5d7a6e80 | 24 | char dta2[8]; //DTA2 | 
| formulas | 0:c68d5d7a6e80 | 25 | uint16_t MAP, Lambda, Speed, Oil_P; | 
| formulas | 0:c68d5d7a6e80 | 26 | char dta3[8]; //DTA3 | 
| formulas | 0:c68d5d7a6e80 | 27 | uint16_t Oil_Temp,Volts; | 
| formulas | 0:c68d5d7a6e80 | 28 | char dta4[8]; //DTA4 | 
| formulas | 0:c68d5d7a6e80 | 29 | uint16_t Gear; | 
| formulas | 0:c68d5d7a6e80 | 30 | char dta6[8]; | 
| formulas | 0:c68d5d7a6e80 | 31 | uint16_t Crank_Error; | 
| formulas | 0:c68d5d7a6e80 | 32 | char lvdtfront[8]; //LVDTFront | 
| formulas | 0:c68d5d7a6e80 | 33 | uint16_t FL_LVDT, FR_LVDT; | 
| formulas | 0:c68d5d7a6e80 | 34 | char lvdtrear[8]; //LVDTRear | 
| formulas | 0:c68d5d7a6e80 | 35 | uint16_t RL_LVDT, RR_LVDT; | 
| formulas | 0:c68d5d7a6e80 | 36 | char brakes[8]; //Brakes | 
| formulas | 1:bd7f40902a2b | 37 | uint16_t Brakes; | 
| formulas | 1:bd7f40902a2b | 38 | char distance[8]; | 
| formulas | 1:bd7f40902a2b | 39 | uint32_t Distance; | 
| formulas | 0:c68d5d7a6e80 | 40 | |
| formulas | 0:c68d5d7a6e80 | 41 | int counter; | 
| formulas | 0:c68d5d7a6e80 | 42 | |
| formulas | 0:c68d5d7a6e80 | 43 | void send(uint16_t ID, char dta[8]) { | 
| formulas | 0:c68d5d7a6e80 | 44 | if(can1.write(CANMessage((uint16_t)ID,dta, 8))) { | 
| formulas | 0:c68d5d7a6e80 | 45 | counter++; | 
| formulas | 0:c68d5d7a6e80 | 46 | printf("%x\n",ID); | 
| formulas | 0:c68d5d7a6e80 | 47 | printf("Message sent: info1=%x%x, info2=%x%x, info3=%x%x, info4=%x%x, counter=%d\n", dta[1],dta[0],dta[3],dta[2],dta[5],dta[4],dta[7],dta[6],counter); | 
| formulas | 1:bd7f40902a2b | 48 | }else{ | 
| formulas | 1:bd7f40902a2b | 49 | printf("Shit\n"); | 
| formulas | 0:c68d5d7a6e80 | 50 | } | 
| formulas | 1:bd7f40902a2b | 51 | }; | 
| formulas | 0:c68d5d7a6e80 | 52 | |
| formulas | 0:c68d5d7a6e80 | 53 | int main() { | 
| formulas | 1:bd7f40902a2b | 54 | |
| formulas | 1:bd7f40902a2b | 55 | CANMessage msg; | 
| formulas | 1:bd7f40902a2b | 56 | Distance=(uint32_t)2000; | 
| formulas | 1:bd7f40902a2b | 57 | distance[0]=(uint8_t)(Distance & 0x000000FF); | 
| formulas | 1:bd7f40902a2b | 58 | distance[1]=(uint8_t)((Distance & 0x0000FF00)>>8); | 
| formulas | 1:bd7f40902a2b | 59 | distance[2]=(uint8_t)((Distance & 0x00FF0000)>>16); | 
| formulas | 1:bd7f40902a2b | 60 | distance[3]=(uint8_t)((Distance & 0xFF000000)>>24); | 
| formulas | 1:bd7f40902a2b | 61 | distance[4]=0; | 
| formulas | 1:bd7f40902a2b | 62 | distance[5]=0; | 
| formulas | 1:bd7f40902a2b | 63 | distance[6]=0; | 
| formulas | 1:bd7f40902a2b | 64 | distance[7]=0; | 
| formulas | 1:bd7f40902a2b | 65 | //pc.printf("distance=%d\n",Distance); | 
| formulas | 1:bd7f40902a2b | 66 | send(DISTANCE_ID,distance); | 
| formulas | 1:bd7f40902a2b | 67 | |
| formulas | 0:c68d5d7a6e80 | 68 | while(1){ | 
| formulas | 0:c68d5d7a6e80 | 69 | counter=0; | 
| formulas | 1:bd7f40902a2b | 70 | speed=(int)(speed_value.read()*150); | 
| formulas | 1:bd7f40902a2b | 71 | //speed=123; | 
| formulas | 1:bd7f40902a2b | 72 | dta2[0]=0; | 
| formulas | 1:bd7f40902a2b | 73 | dta2[1]=0; | 
| formulas | 1:bd7f40902a2b | 74 | dta2[2]=0; | 
| formulas | 1:bd7f40902a2b | 75 | dta2[3]=0; | 
| formulas | 1:bd7f40902a2b | 76 | dta2[4]=(uint8_t)(speed & 0x00FF); | 
| formulas | 1:bd7f40902a2b | 77 | dta2[5]=(uint8_t)(speed>>8); | 
| formulas | 1:bd7f40902a2b | 78 | dta2[6]=0; | 
| formulas | 1:bd7f40902a2b | 79 | dta2[7]=0; | 
| formulas | 1:bd7f40902a2b | 80 | pc.printf("speed=%d\n",speed); | 
| formulas | 1:bd7f40902a2b | 81 | send(DTA_2,dta2); | 
| formulas | 1:bd7f40902a2b | 82 | |
| formulas | 1:bd7f40902a2b | 83 | |
| formulas | 1:bd7f40902a2b | 84 | /* for(int k=0;k<150;k++){ | 
| formulas | 1:bd7f40902a2b | 85 | |
| formulas | 1:bd7f40902a2b | 86 | |
| formulas | 0:c68d5d7a6e80 | 87 | //DTA1 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 88 | Rpm=k; | 
| formulas | 0:c68d5d7a6e80 | 89 | TPS=k*2; | 
| formulas | 0:c68d5d7a6e80 | 90 | Water_Temp=k*4; | 
| formulas | 0:c68d5d7a6e80 | 91 | Air_Temp=k*6; | 
| formulas | 0:c68d5d7a6e80 | 92 | dta1[0]=(uint8_t)(Rpm & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 93 | dta1[1]=(uint8_t)(Rpm>>8); | 
| formulas | 0:c68d5d7a6e80 | 94 | dta1[2]=(uint8_t)(TPS & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 95 | dta1[3]=(uint8_t)(TPS>>8); | 
| formulas | 0:c68d5d7a6e80 | 96 | dta1[4]=(uint8_t)(Water_Temp & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 97 | dta1[5]=(uint8_t)(Water_Temp>>8); | 
| formulas | 0:c68d5d7a6e80 | 98 | dta1[6]=(uint8_t)(Air_Temp & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 99 | dta1[7]=(uint8_t)(Air_Temp>>8); | 
| formulas | 0:c68d5d7a6e80 | 100 | send(DTA_1,dta1); | 
| formulas | 0:c68d5d7a6e80 | 101 | |
| formulas | 0:c68d5d7a6e80 | 102 | |
| formulas | 0:c68d5d7a6e80 | 103 | //DTA2 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 104 | Speed=k; | 
| formulas | 0:c68d5d7a6e80 | 105 | MAP=k*2; | 
| formulas | 0:c68d5d7a6e80 | 106 | Lambda=k*4; | 
| formulas | 0:c68d5d7a6e80 | 107 | Oil_P=k*6; | 
| formulas | 0:c68d5d7a6e80 | 108 | dta2[0]=(uint8_t)(MAP & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 109 | dta2[1]=(uint8_t)(MAP>>8); | 
| formulas | 0:c68d5d7a6e80 | 110 | dta2[2]=(uint8_t)(Lambda & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 111 | dta2[3]=(uint8_t)(Lambda>>8); | 
| formulas | 0:c68d5d7a6e80 | 112 | dta2[4]=(uint8_t)(Speed & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 113 | dta2[5]=(uint8_t)(Speed>>8); | 
| formulas | 0:c68d5d7a6e80 | 114 | dta2[6]=(uint8_t)(Oil_P & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 115 | dta2[7]=(uint8_t)(Oil_P>>8); | 
| formulas | 0:c68d5d7a6e80 | 116 | send(DTA_2,dta2); | 
| formulas | 0:c68d5d7a6e80 | 117 | |
| formulas | 0:c68d5d7a6e80 | 118 | //DTA3 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 119 | Oil_Temp=k*2; | 
| formulas | 0:c68d5d7a6e80 | 120 | Volts=k*4; | 
| formulas | 0:c68d5d7a6e80 | 121 | dta3[0]=0; | 
| formulas | 0:c68d5d7a6e80 | 122 | dta3[1]=0; | 
| formulas | 0:c68d5d7a6e80 | 123 | dta3[2]=(uint8_t)(Oil_Temp & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 124 | dta3[3]=(uint8_t)(Oil_Temp>>8); | 
| formulas | 0:c68d5d7a6e80 | 125 | dta3[4]=(uint8_t)(Volts & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 126 | dta3[5]=(uint8_t)(Volts>>8); | 
| formulas | 0:c68d5d7a6e80 | 127 | dta3[6]=0; | 
| formulas | 0:c68d5d7a6e80 | 128 | dta3[7]=0; | 
| formulas | 0:c68d5d7a6e80 | 129 | send(DTA_3,dta3); | 
| formulas | 0:c68d5d7a6e80 | 130 | |
| formulas | 0:c68d5d7a6e80 | 131 | //DTA4 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 132 | Gear=k/25; | 
| formulas | 0:c68d5d7a6e80 | 133 | dta4[0]=Gear; | 
| formulas | 0:c68d5d7a6e80 | 134 | send(DTA_4,dta4); | 
| formulas | 0:c68d5d7a6e80 | 135 | |
| formulas | 0:c68d5d7a6e80 | 136 | //DTA6 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 137 | if((k/10)%2){ | 
| formulas | 0:c68d5d7a6e80 | 138 | //only for Crank_Error | 
| formulas | 0:c68d5d7a6e80 | 139 | dta6[4]=0xFF; | 
| formulas | 0:c68d5d7a6e80 | 140 | dta6[5]=0xFF; | 
| formulas | 0:c68d5d7a6e80 | 141 | }else{ | 
| formulas | 0:c68d5d7a6e80 | 142 | dta6[4]=0; | 
| formulas | 0:c68d5d7a6e80 | 143 | dta6[5]=0; | 
| formulas | 0:c68d5d7a6e80 | 144 | }; | 
| formulas | 0:c68d5d7a6e80 | 145 | send(DTA_6,dta6); | 
| formulas | 0:c68d5d7a6e80 | 146 | |
| formulas | 0:c68d5d7a6e80 | 147 | //LVDTFront CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 148 | FL_LVDT=k; | 
| formulas | 0:c68d5d7a6e80 | 149 | FR_LVDT=150-k; | 
| formulas | 0:c68d5d7a6e80 | 150 | lvdtfront[0]=(uint8_t)(FL_LVDT & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 151 | lvdtfront[1]=(uint8_t)(FL_LVDT>>8); | 
| formulas | 0:c68d5d7a6e80 | 152 | lvdtfront[2]=(uint8_t)(FR_LVDT & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 153 | lvdtfront[3]=(uint8_t)(FR_LVDT>>8); | 
| formulas | 0:c68d5d7a6e80 | 154 | send(LVDT_FRONT,lvdtfront); | 
| formulas | 0:c68d5d7a6e80 | 155 | |
| formulas | 0:c68d5d7a6e80 | 156 | //LVDTRear CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 157 | RL_LVDT=k; | 
| formulas | 0:c68d5d7a6e80 | 158 | RR_LVDT=150-k; | 
| formulas | 0:c68d5d7a6e80 | 159 | lvdtrear[0]=(uint8_t)(RL_LVDT & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 160 | lvdtrear[1]=(uint8_t)(RL_LVDT>>8); | 
| formulas | 0:c68d5d7a6e80 | 161 | lvdtrear[2]=(uint8_t)(RR_LVDT & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 162 | lvdtrear[3]=(uint8_t)(RR_LVDT>>8); | 
| formulas | 0:c68d5d7a6e80 | 163 | send(LVDT_REAR,lvdtrear); | 
| formulas | 0:c68d5d7a6e80 | 164 | |
| formulas | 0:c68d5d7a6e80 | 165 | //Brakes CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 166 | if((k/10)%2){ | 
| formulas | 0:c68d5d7a6e80 | 167 | brakes[0]=0xFF; | 
| formulas | 0:c68d5d7a6e80 | 168 | brakes[1]=0xFF; | 
| formulas | 0:c68d5d7a6e80 | 169 | }else{ | 
| formulas | 0:c68d5d7a6e80 | 170 | brakes[0]=0; | 
| formulas | 0:c68d5d7a6e80 | 171 | brakes[1]=0; | 
| formulas | 0:c68d5d7a6e80 | 172 | }; | 
| formulas | 0:c68d5d7a6e80 | 173 | send(BRAKES,brakes); | 
| formulas | 0:c68d5d7a6e80 | 174 | |
| formulas | 1:bd7f40902a2b | 175 | };*/ | 
| formulas | 0:c68d5d7a6e80 | 176 | |
| formulas | 0:c68d5d7a6e80 | 177 | /*for(int k=150;k>0;k--){ | 
| formulas | 0:c68d5d7a6e80 | 178 | |
| formulas | 0:c68d5d7a6e80 | 179 | //DTA1 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 180 | Rpm=k; | 
| formulas | 0:c68d5d7a6e80 | 181 | TPS=k*2; | 
| formulas | 0:c68d5d7a6e80 | 182 | Water_Temp=k*4; | 
| formulas | 0:c68d5d7a6e80 | 183 | Air_Temp=k*6; | 
| formulas | 0:c68d5d7a6e80 | 184 | dta1[0]=(uint8_t)(Rpm & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 185 | dta1[1]=(uint8_t)(Rpm>>8); | 
| formulas | 0:c68d5d7a6e80 | 186 | dta1[2]=(uint8_t)(TPS & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 187 | dta1[3]=(uint8_t)(TPS>>8); | 
| formulas | 0:c68d5d7a6e80 | 188 | dta1[4]=(uint8_t)(Water_Temp & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 189 | dta1[5]=(uint8_t)(Water_Temp>>8); | 
| formulas | 0:c68d5d7a6e80 | 190 | dta1[6]=(uint8_t)(Air_Temp & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 191 | dta1[7]=(uint8_t)(Air_Temp>>8); | 
| formulas | 0:c68d5d7a6e80 | 192 | send(DTA_1,dta1); | 
| formulas | 0:c68d5d7a6e80 | 193 | |
| formulas | 0:c68d5d7a6e80 | 194 | //DTA2 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 195 | Speed=k; | 
| formulas | 0:c68d5d7a6e80 | 196 | MAP=k*2; | 
| formulas | 0:c68d5d7a6e80 | 197 | Lambda=k*4; | 
| formulas | 0:c68d5d7a6e80 | 198 | Oil_P=k*6; | 
| formulas | 0:c68d5d7a6e80 | 199 | dta2[0]=(uint8_t)(MAP & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 200 | dta2[1]=(uint8_t)(MAP>>8); | 
| formulas | 0:c68d5d7a6e80 | 201 | dta2[2]=(uint8_t)(Lambda & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 202 | dta2[3]=(uint8_t)(Lambda>>8); | 
| formulas | 0:c68d5d7a6e80 | 203 | dta2[4]=(uint8_t)(Speed & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 204 | dta2[5]=(uint8_t)(Speed>>8); | 
| formulas | 0:c68d5d7a6e80 | 205 | dta2[6]=(uint8_t)(Oil_P & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 206 | dta2[7]=(uint8_t)(Oil_P>>8); | 
| formulas | 0:c68d5d7a6e80 | 207 | send(DTA_2,dta2); | 
| formulas | 0:c68d5d7a6e80 | 208 | |
| formulas | 0:c68d5d7a6e80 | 209 | //DTA3 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 210 | Oil_Temp=k*2; | 
| formulas | 0:c68d5d7a6e80 | 211 | Volts=k*4; | 
| formulas | 0:c68d5d7a6e80 | 212 | dta3[0]=0; | 
| formulas | 0:c68d5d7a6e80 | 213 | dta3[1]=0; | 
| formulas | 0:c68d5d7a6e80 | 214 | dta3[2]=(uint8_t)(Oil_Temp & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 215 | dta3[3]=(uint8_t)(Oil_Temp>>8); | 
| formulas | 0:c68d5d7a6e80 | 216 | dta3[4]=(uint8_t)(Volts & 0x00FF); | 
| formulas | 0:c68d5d7a6e80 | 217 | dta3[5]=(uint8_t)(Volts>>8); | 
| formulas | 0:c68d5d7a6e80 | 218 | dta3[6]=0; | 
| formulas | 0:c68d5d7a6e80 | 219 | dta3[7]=0; | 
| formulas | 0:c68d5d7a6e80 | 220 | send(DTA_3,dta3); | 
| formulas | 0:c68d5d7a6e80 | 221 | |
| formulas | 0:c68d5d7a6e80 | 222 | //DTA4 CAN simulation | 
| formulas | 0:c68d5d7a6e80 | 223 | Gear=k/25; | 
| formulas | 0:c68d5d7a6e80 | 224 | dta4[0]=Gear; | 
| formulas | 0:c68d5d7a6e80 | 225 | send(DTA_4,dta4); | 
| formulas | 0:c68d5d7a6e80 | 226 | |
| formulas | 0:c68d5d7a6e80 | 227 | };*/ | 
| formulas | 0:c68d5d7a6e80 | 228 | }; | 
| formulas | 0:c68d5d7a6e80 | 229 | }; |