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@0:c68d5d7a6e80, 2018-05-07 (annotated)
- Committer:
- formulas
- Date:
- Mon May 07 15:23:10 2018 +0000
- Revision:
- 0:c68d5d7a6e80
- Child:
- 1:bd7f40902a2b
new board
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 | 0:c68d5d7a6e80 | 15 | // If we add some other IDs in the vehicle add them here |
| formulas | 0:c68d5d7a6e80 | 16 | |
| formulas | 0:c68d5d7a6e80 | 17 | CAN can1(PB_8, PB_9); |
| formulas | 0:c68d5d7a6e80 | 18 | |
| formulas | 0:c68d5d7a6e80 | 19 | char dta1[8]; //DTA1 |
| formulas | 0:c68d5d7a6e80 | 20 | uint16_t Rpm,TPS, Water_Temp, Air_Temp; |
| formulas | 0:c68d5d7a6e80 | 21 | char dta2[8]; //DTA2 |
| formulas | 0:c68d5d7a6e80 | 22 | uint16_t MAP, Lambda, Speed, Oil_P; |
| formulas | 0:c68d5d7a6e80 | 23 | char dta3[8]; //DTA3 |
| formulas | 0:c68d5d7a6e80 | 24 | uint16_t Oil_Temp,Volts; |
| formulas | 0:c68d5d7a6e80 | 25 | char dta4[8]; //DTA4 |
| formulas | 0:c68d5d7a6e80 | 26 | uint16_t Gear; |
| formulas | 0:c68d5d7a6e80 | 27 | char dta6[8]; |
| formulas | 0:c68d5d7a6e80 | 28 | uint16_t Crank_Error; |
| formulas | 0:c68d5d7a6e80 | 29 | char lvdtfront[8]; //LVDTFront |
| formulas | 0:c68d5d7a6e80 | 30 | uint16_t FL_LVDT, FR_LVDT; |
| formulas | 0:c68d5d7a6e80 | 31 | char lvdtrear[8]; //LVDTRear |
| formulas | 0:c68d5d7a6e80 | 32 | uint16_t RL_LVDT, RR_LVDT; |
| formulas | 0:c68d5d7a6e80 | 33 | char brakes[8]; //Brakes |
| formulas | 0:c68d5d7a6e80 | 34 | uint16_t Brakes; |
| formulas | 0:c68d5d7a6e80 | 35 | |
| formulas | 0:c68d5d7a6e80 | 36 | int counter; |
| formulas | 0:c68d5d7a6e80 | 37 | |
| formulas | 0:c68d5d7a6e80 | 38 | void send(uint16_t ID, char dta[8]) { |
| formulas | 0:c68d5d7a6e80 | 39 | if(can1.write(CANMessage((uint16_t)ID,dta, 8))) { |
| formulas | 0:c68d5d7a6e80 | 40 | counter++; |
| formulas | 0:c68d5d7a6e80 | 41 | printf("%x\n",ID); |
| formulas | 0:c68d5d7a6e80 | 42 | 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 | 0:c68d5d7a6e80 | 43 | } |
| formulas | 0:c68d5d7a6e80 | 44 | } |
| formulas | 0:c68d5d7a6e80 | 45 | |
| formulas | 0:c68d5d7a6e80 | 46 | int main() { |
| formulas | 0:c68d5d7a6e80 | 47 | while(1){ |
| formulas | 0:c68d5d7a6e80 | 48 | counter=0; |
| formulas | 0:c68d5d7a6e80 | 49 | CANMessage msg; |
| formulas | 0:c68d5d7a6e80 | 50 | for(int k=0;k<150;k++){ |
| formulas | 0:c68d5d7a6e80 | 51 | |
| formulas | 0:c68d5d7a6e80 | 52 | //DTA1 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 53 | Rpm=k; |
| formulas | 0:c68d5d7a6e80 | 54 | TPS=k*2; |
| formulas | 0:c68d5d7a6e80 | 55 | Water_Temp=k*4; |
| formulas | 0:c68d5d7a6e80 | 56 | Air_Temp=k*6; |
| formulas | 0:c68d5d7a6e80 | 57 | dta1[0]=(uint8_t)(Rpm & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 58 | dta1[1]=(uint8_t)(Rpm>>8); |
| formulas | 0:c68d5d7a6e80 | 59 | dta1[2]=(uint8_t)(TPS & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 60 | dta1[3]=(uint8_t)(TPS>>8); |
| formulas | 0:c68d5d7a6e80 | 61 | dta1[4]=(uint8_t)(Water_Temp & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 62 | dta1[5]=(uint8_t)(Water_Temp>>8); |
| formulas | 0:c68d5d7a6e80 | 63 | dta1[6]=(uint8_t)(Air_Temp & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 64 | dta1[7]=(uint8_t)(Air_Temp>>8); |
| formulas | 0:c68d5d7a6e80 | 65 | send(DTA_1,dta1); |
| formulas | 0:c68d5d7a6e80 | 66 | |
| formulas | 0:c68d5d7a6e80 | 67 | |
| formulas | 0:c68d5d7a6e80 | 68 | //DTA2 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 69 | Speed=k; |
| formulas | 0:c68d5d7a6e80 | 70 | MAP=k*2; |
| formulas | 0:c68d5d7a6e80 | 71 | Lambda=k*4; |
| formulas | 0:c68d5d7a6e80 | 72 | Oil_P=k*6; |
| formulas | 0:c68d5d7a6e80 | 73 | dta2[0]=(uint8_t)(MAP & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 74 | dta2[1]=(uint8_t)(MAP>>8); |
| formulas | 0:c68d5d7a6e80 | 75 | dta2[2]=(uint8_t)(Lambda & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 76 | dta2[3]=(uint8_t)(Lambda>>8); |
| formulas | 0:c68d5d7a6e80 | 77 | dta2[4]=(uint8_t)(Speed & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 78 | dta2[5]=(uint8_t)(Speed>>8); |
| formulas | 0:c68d5d7a6e80 | 79 | dta2[6]=(uint8_t)(Oil_P & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 80 | dta2[7]=(uint8_t)(Oil_P>>8); |
| formulas | 0:c68d5d7a6e80 | 81 | send(DTA_2,dta2); |
| formulas | 0:c68d5d7a6e80 | 82 | |
| formulas | 0:c68d5d7a6e80 | 83 | //DTA3 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 84 | Oil_Temp=k*2; |
| formulas | 0:c68d5d7a6e80 | 85 | Volts=k*4; |
| formulas | 0:c68d5d7a6e80 | 86 | dta3[0]=0; |
| formulas | 0:c68d5d7a6e80 | 87 | dta3[1]=0; |
| formulas | 0:c68d5d7a6e80 | 88 | dta3[2]=(uint8_t)(Oil_Temp & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 89 | dta3[3]=(uint8_t)(Oil_Temp>>8); |
| formulas | 0:c68d5d7a6e80 | 90 | dta3[4]=(uint8_t)(Volts & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 91 | dta3[5]=(uint8_t)(Volts>>8); |
| formulas | 0:c68d5d7a6e80 | 92 | dta3[6]=0; |
| formulas | 0:c68d5d7a6e80 | 93 | dta3[7]=0; |
| formulas | 0:c68d5d7a6e80 | 94 | send(DTA_3,dta3); |
| formulas | 0:c68d5d7a6e80 | 95 | |
| formulas | 0:c68d5d7a6e80 | 96 | //DTA4 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 97 | Gear=k/25; |
| formulas | 0:c68d5d7a6e80 | 98 | dta4[0]=Gear; |
| formulas | 0:c68d5d7a6e80 | 99 | send(DTA_4,dta4); |
| formulas | 0:c68d5d7a6e80 | 100 | |
| formulas | 0:c68d5d7a6e80 | 101 | //DTA6 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 102 | if((k/10)%2){ |
| formulas | 0:c68d5d7a6e80 | 103 | //only for Crank_Error |
| formulas | 0:c68d5d7a6e80 | 104 | dta6[4]=0xFF; |
| formulas | 0:c68d5d7a6e80 | 105 | dta6[5]=0xFF; |
| formulas | 0:c68d5d7a6e80 | 106 | }else{ |
| formulas | 0:c68d5d7a6e80 | 107 | dta6[4]=0; |
| formulas | 0:c68d5d7a6e80 | 108 | dta6[5]=0; |
| formulas | 0:c68d5d7a6e80 | 109 | }; |
| formulas | 0:c68d5d7a6e80 | 110 | send(DTA_6,dta6); |
| formulas | 0:c68d5d7a6e80 | 111 | |
| formulas | 0:c68d5d7a6e80 | 112 | //LVDTFront CAN simulation |
| formulas | 0:c68d5d7a6e80 | 113 | FL_LVDT=k; |
| formulas | 0:c68d5d7a6e80 | 114 | FR_LVDT=150-k; |
| formulas | 0:c68d5d7a6e80 | 115 | lvdtfront[0]=(uint8_t)(FL_LVDT & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 116 | lvdtfront[1]=(uint8_t)(FL_LVDT>>8); |
| formulas | 0:c68d5d7a6e80 | 117 | lvdtfront[2]=(uint8_t)(FR_LVDT & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 118 | lvdtfront[3]=(uint8_t)(FR_LVDT>>8); |
| formulas | 0:c68d5d7a6e80 | 119 | send(LVDT_FRONT,lvdtfront); |
| formulas | 0:c68d5d7a6e80 | 120 | |
| formulas | 0:c68d5d7a6e80 | 121 | //LVDTRear CAN simulation |
| formulas | 0:c68d5d7a6e80 | 122 | RL_LVDT=k; |
| formulas | 0:c68d5d7a6e80 | 123 | RR_LVDT=150-k; |
| formulas | 0:c68d5d7a6e80 | 124 | lvdtrear[0]=(uint8_t)(RL_LVDT & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 125 | lvdtrear[1]=(uint8_t)(RL_LVDT>>8); |
| formulas | 0:c68d5d7a6e80 | 126 | lvdtrear[2]=(uint8_t)(RR_LVDT & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 127 | lvdtrear[3]=(uint8_t)(RR_LVDT>>8); |
| formulas | 0:c68d5d7a6e80 | 128 | send(LVDT_REAR,lvdtrear); |
| formulas | 0:c68d5d7a6e80 | 129 | |
| formulas | 0:c68d5d7a6e80 | 130 | //Brakes CAN simulation |
| formulas | 0:c68d5d7a6e80 | 131 | if((k/10)%2){ |
| formulas | 0:c68d5d7a6e80 | 132 | brakes[0]=0xFF; |
| formulas | 0:c68d5d7a6e80 | 133 | brakes[1]=0xFF; |
| formulas | 0:c68d5d7a6e80 | 134 | }else{ |
| formulas | 0:c68d5d7a6e80 | 135 | brakes[0]=0; |
| formulas | 0:c68d5d7a6e80 | 136 | brakes[1]=0; |
| formulas | 0:c68d5d7a6e80 | 137 | }; |
| formulas | 0:c68d5d7a6e80 | 138 | send(BRAKES,brakes); |
| formulas | 0:c68d5d7a6e80 | 139 | |
| formulas | 0:c68d5d7a6e80 | 140 | }; |
| formulas | 0:c68d5d7a6e80 | 141 | |
| formulas | 0:c68d5d7a6e80 | 142 | /*for(int k=150;k>0;k--){ |
| formulas | 0:c68d5d7a6e80 | 143 | |
| formulas | 0:c68d5d7a6e80 | 144 | //DTA1 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 145 | Rpm=k; |
| formulas | 0:c68d5d7a6e80 | 146 | TPS=k*2; |
| formulas | 0:c68d5d7a6e80 | 147 | Water_Temp=k*4; |
| formulas | 0:c68d5d7a6e80 | 148 | Air_Temp=k*6; |
| formulas | 0:c68d5d7a6e80 | 149 | dta1[0]=(uint8_t)(Rpm & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 150 | dta1[1]=(uint8_t)(Rpm>>8); |
| formulas | 0:c68d5d7a6e80 | 151 | dta1[2]=(uint8_t)(TPS & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 152 | dta1[3]=(uint8_t)(TPS>>8); |
| formulas | 0:c68d5d7a6e80 | 153 | dta1[4]=(uint8_t)(Water_Temp & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 154 | dta1[5]=(uint8_t)(Water_Temp>>8); |
| formulas | 0:c68d5d7a6e80 | 155 | dta1[6]=(uint8_t)(Air_Temp & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 156 | dta1[7]=(uint8_t)(Air_Temp>>8); |
| formulas | 0:c68d5d7a6e80 | 157 | send(DTA_1,dta1); |
| formulas | 0:c68d5d7a6e80 | 158 | |
| formulas | 0:c68d5d7a6e80 | 159 | //DTA2 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 160 | Speed=k; |
| formulas | 0:c68d5d7a6e80 | 161 | MAP=k*2; |
| formulas | 0:c68d5d7a6e80 | 162 | Lambda=k*4; |
| formulas | 0:c68d5d7a6e80 | 163 | Oil_P=k*6; |
| formulas | 0:c68d5d7a6e80 | 164 | dta2[0]=(uint8_t)(MAP & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 165 | dta2[1]=(uint8_t)(MAP>>8); |
| formulas | 0:c68d5d7a6e80 | 166 | dta2[2]=(uint8_t)(Lambda & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 167 | dta2[3]=(uint8_t)(Lambda>>8); |
| formulas | 0:c68d5d7a6e80 | 168 | dta2[4]=(uint8_t)(Speed & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 169 | dta2[5]=(uint8_t)(Speed>>8); |
| formulas | 0:c68d5d7a6e80 | 170 | dta2[6]=(uint8_t)(Oil_P & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 171 | dta2[7]=(uint8_t)(Oil_P>>8); |
| formulas | 0:c68d5d7a6e80 | 172 | send(DTA_2,dta2); |
| formulas | 0:c68d5d7a6e80 | 173 | |
| formulas | 0:c68d5d7a6e80 | 174 | //DTA3 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 175 | Oil_Temp=k*2; |
| formulas | 0:c68d5d7a6e80 | 176 | Volts=k*4; |
| formulas | 0:c68d5d7a6e80 | 177 | dta3[0]=0; |
| formulas | 0:c68d5d7a6e80 | 178 | dta3[1]=0; |
| formulas | 0:c68d5d7a6e80 | 179 | dta3[2]=(uint8_t)(Oil_Temp & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 180 | dta3[3]=(uint8_t)(Oil_Temp>>8); |
| formulas | 0:c68d5d7a6e80 | 181 | dta3[4]=(uint8_t)(Volts & 0x00FF); |
| formulas | 0:c68d5d7a6e80 | 182 | dta3[5]=(uint8_t)(Volts>>8); |
| formulas | 0:c68d5d7a6e80 | 183 | dta3[6]=0; |
| formulas | 0:c68d5d7a6e80 | 184 | dta3[7]=0; |
| formulas | 0:c68d5d7a6e80 | 185 | send(DTA_3,dta3); |
| formulas | 0:c68d5d7a6e80 | 186 | |
| formulas | 0:c68d5d7a6e80 | 187 | //DTA4 CAN simulation |
| formulas | 0:c68d5d7a6e80 | 188 | Gear=k/25; |
| formulas | 0:c68d5d7a6e80 | 189 | dta4[0]=Gear; |
| formulas | 0:c68d5d7a6e80 | 190 | send(DTA_4,dta4); |
| formulas | 0:c68d5d7a6e80 | 191 | |
| formulas | 0:c68d5d7a6e80 | 192 | };*/ |
| formulas | 0:c68d5d7a6e80 | 193 | }; |
| formulas | 0:c68d5d7a6e80 | 194 | }; |