Stefan Sofijanić / Mbed 2 deprecated CANTX_NUCLEO

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 };