Stefan Sofijanić / Mbed 2 deprecated CANTX_NUCLEO

Dependencies:   mbed

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?

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