FRC_equipe1 / Mbed 2 deprecated FRC_2019

Dependencies:   mbed

Committer:
Wael_H
Date:
Thu May 23 15:37:33 2019 +0000
Revision:
9:2113adf37c66
Parent:
8:94ecfe411d02
Child:
11:e8c4a1c6553d
Child:
13:9c62e263f245
VERSION PARFAITE DE MA CLASSE (SIGNER WAEL)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wael_H 7:753e901d441b 1 #include "mbed.h"
Wael_H 7:753e901d441b 2 #include "CAN_asser.h"
Wael_H 5:34048faec367 3
Wael_H 7:753e901d441b 4 CANMessage msg_can[256];
Wael_H 5:34048faec367 5 unsigned char pt_lecture_can = 0, pt_ecriture_can = 0;
Wael_H 5:34048faec367 6 int nb_msg_can = 0;
Wael_H 9:2113adf37c66 7
Wael_H 9:2113adf37c66 8 CAN can(PB_8, PB_9,1000000);
Wael_H 7:753e901d441b 9 Serial dbug(USBTX, USBRX, 115200);
Wael_H 7:753e901d441b 10
Wael_H 7:753e901d441b 11 void can_init(void)
Wael_H 7:753e901d441b 12 {
Wael_H 7:753e901d441b 13 can.attach(&isr_can, CAN::RxIrq);
Wael_H 7:753e901d441b 14 }
Wael_H 7:753e901d441b 15
Wael_H 5:34048faec367 16 void isr_can()
Wael_H 5:34048faec367 17 {
Wael_H 5:34048faec367 18 can.read(msg_can[pt_ecriture_can]);
Wael_H 5:34048faec367 19 nb_msg_can++;
Wael_H 5:34048faec367 20 pt_ecriture_can++;
Wael_H 5:34048faec367 21 if(nb_msg_can > 6)
Wael_H 5:34048faec367 22 {
Wael_H 7:753e901d441b 23 //dbug.printf("!!!!!! CAN BUFFER OVERFLOW !!!!!!!!\n");
Wael_H 5:34048faec367 24 pt_lecture_can++;
Wael_H 5:34048faec367 25 nb_msg_can--;
Wael_H 5:34048faec367 26 }
Wael_H 7:753e901d441b 27 }
Wael_H 7:753e901d441b 28
Wael_H 9:2113adf37c66 29 void majFlagDpl(bool& flagFinDpl)
Wael_H 5:34048faec367 30 {
Wael_H 5:34048faec367 31 while(nb_msg_can>0)
Wael_H 5:34048faec367 32 {
Wael_H 8:94ecfe411d02 33 if(msg_can[pt_lecture_can].id == 0x111)
Wael_H 8:94ecfe411d02 34 flagFinDpl = true;
Wael_H 9:2113adf37c66 35
Wael_H 9:2113adf37c66 36 nb_msg_can--;
Wael_H 9:2113adf37c66 37 pt_lecture_can++;
Wael_H 9:2113adf37c66 38 }
Wael_H 9:2113adf37c66 39 }
Wael_H 9:2113adf37c66 40
Wael_H 9:2113adf37c66 41 void majPos(int* pos)
Wael_H 9:2113adf37c66 42 {
Wael_H 9:2113adf37c66 43 while(nb_msg_can>0)
Wael_H 9:2113adf37c66 44 {
Wael_H 9:2113adf37c66 45 if(msg_can[pt_lecture_can].id == ODOMETRIE_POSITION)
Wael_H 9:2113adf37c66 46 get_pos(msg_can[pt_lecture_can], (short*)pos);
Wael_H 7:753e901d441b 47
Wael_H 5:34048faec367 48 nb_msg_can--;
Wael_H 5:34048faec367 49 pt_lecture_can++;
Wael_H 5:34048faec367 50 }
Wael_H 7:753e901d441b 51 }
Wael_H 7:753e901d441b 52
Wael_H 5:34048faec367 53 void get_pos(CANMessage msg_pos, short* position)
Wael_H 5:34048faec367 54 {
Wael_H 5:34048faec367 55 memcpy((void *)((void *)&position[0]), &(msg_pos.data[0]), 2);
Wael_H 5:34048faec367 56 memcpy((void *)((void *)&position[1]), &(msg_pos.data[2]), 2);
Wael_H 5:34048faec367 57 memcpy((void *)((void *)&position[2]), &(msg_pos.data[4]), 2);
Wael_H 5:34048faec367 58 }
Wael_H 5:34048faec367 59
Wael_H 5:34048faec367 60 void SendCoefK (unsigned short id, double K)
Wael_H 5:34048faec367 61 {
Wael_H 5:34048faec367 62
Wael_H 5:34048faec367 63 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 64
Wael_H 5:34048faec367 65 msgTx.id=id;
Wael_H 5:34048faec367 66
Wael_H 5:34048faec367 67 msgTx.len=2;
Wael_H 5:34048faec367 68
Wael_H 5:34048faec367 69 msgTx.format=CANStandard;
Wael_H 5:34048faec367 70
Wael_H 5:34048faec367 71 msgTx.type=CANData;
Wael_H 5:34048faec367 72
Wael_H 5:34048faec367 73 // from sur 2 octets
Wael_H 5:34048faec367 74 for(int i=0;i<8;i++)
Wael_H 5:34048faec367 75 {
Wael_H 5:34048faec367 76 memcpy(&(msgTx.data[i]), (void *)((void *)&K + i), 1);
Wael_H 5:34048faec367 77 }
Wael_H 5:34048faec367 78
Wael_H 5:34048faec367 79 can.write(msgTx);
Wael_H 5:34048faec367 80 }
Wael_H 5:34048faec367 81 /*********************************************************************************************************/
Wael_H 5:34048faec367 82
Wael_H 5:34048faec367 83 /* FUNCTION NAME: SendRawId */
Wael_H 5:34048faec367 84 /* DESCRIPTION : Envoie un message sans donnée, c'est-à-dire contenant uniquement un ID, sur le bus CAN */
Wael_H 5:34048faec367 85 /*********************************************************************************************************/
Wael_H 5:34048faec367 86 void SendRawId (unsigned short id)
Wael_H 5:34048faec367 87 {
Wael_H 5:34048faec367 88 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 89
Wael_H 5:34048faec367 90 msgTx.id=id;
Wael_H 5:34048faec367 91
Wael_H 5:34048faec367 92 msgTx.len=0;
Wael_H 5:34048faec367 93
Wael_H 5:34048faec367 94 can.write(msgTx);
Wael_H 5:34048faec367 95
Wael_H 5:34048faec367 96 wait_us(200);
Wael_H 5:34048faec367 97 }
Wael_H 5:34048faec367 98
Wael_H 5:34048faec367 99 /*********************************************************************************************/
Wael_H 5:34048faec367 100
Wael_H 5:34048faec367 101 /* FUNCTION NAME: SendAck */
Wael_H 5:34048faec367 102
Wael_H 5:34048faec367 103 /* DESCRIPTION : Envoyer un acknowledge */
Wael_H 5:34048faec367 104 /*********************************************************************************************/
Wael_H 5:34048faec367 105 void SendAck(unsigned short id, unsigned short from)
Wael_H 5:34048faec367 106 {
Wael_H 5:34048faec367 107
Wael_H 5:34048faec367 108 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 109
Wael_H 5:34048faec367 110 msgTx.id=id;
Wael_H 5:34048faec367 111
Wael_H 5:34048faec367 112 msgTx.len=2;
Wael_H 5:34048faec367 113
Wael_H 5:34048faec367 114 msgTx.format=CANStandard;
Wael_H 5:34048faec367 115
Wael_H 5:34048faec367 116 msgTx.type=CANData;
Wael_H 5:34048faec367 117
Wael_H 5:34048faec367 118 // from sur 2 octets
Wael_H 5:34048faec367 119
Wael_H 5:34048faec367 120 msgTx.data[0]=(unsigned char)from;
Wael_H 5:34048faec367 121
Wael_H 5:34048faec367 122 msgTx.data[1]=(unsigned char)(from>>8);
Wael_H 5:34048faec367 123
Wael_H 5:34048faec367 124
Wael_H 5:34048faec367 125 can.write(msgTx);
Wael_H 5:34048faec367 126 }
Wael_H 5:34048faec367 127
Wael_H 5:34048faec367 128 /*********************************************************************************************/
Wael_H 5:34048faec367 129
Wael_H 5:34048faec367 130 /* FUNCTION NAME: GoToPosition */
Wael_H 5:34048faec367 131 /* DESCRIPTION : Transmission CAN correspondant à un asservissement en position (x,y,theta) */
Wael_H 5:34048faec367 132 /*********************************************************************************************/
Wael_H 5:34048faec367 133 void GoToPosition (unsigned short x,unsigned short y,signed short theta,signed char sens)
Wael_H 5:34048faec367 134 {
Wael_H 5:34048faec367 135
Wael_H 5:34048faec367 136 //id_to_expect=ACK_CONSIGNE;
Wael_H 5:34048faec367 137
Wael_H 5:34048faec367 138 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 139
Wael_H 5:34048faec367 140 msgTx.id=ASSERVISSEMENT_XYT; // tx nouvelle position en (x,y,theta)
Wael_H 5:34048faec367 141
Wael_H 5:34048faec367 142 msgTx.len=7;
Wael_H 5:34048faec367 143
Wael_H 5:34048faec367 144 msgTx.format=CANStandard;
Wael_H 5:34048faec367 145
Wael_H 5:34048faec367 146 msgTx.type=CANData;
Wael_H 5:34048faec367 147
Wael_H 5:34048faec367 148 // x sur 2 octets
Wael_H 5:34048faec367 149
Wael_H 5:34048faec367 150 msgTx.data[0]=(unsigned char)x;
Wael_H 5:34048faec367 151
Wael_H 5:34048faec367 152 msgTx.data[1]=(unsigned char)(x>>8);
Wael_H 5:34048faec367 153
Wael_H 5:34048faec367 154 // y sur 2 octets
Wael_H 5:34048faec367 155
Wael_H 5:34048faec367 156 msgTx.data[2]=(unsigned char)y;
Wael_H 5:34048faec367 157
Wael_H 5:34048faec367 158 msgTx.data[3]=(unsigned char)(y>>8);
Wael_H 5:34048faec367 159
Wael_H 5:34048faec367 160 // theta signé sur 2 octets
Wael_H 5:34048faec367 161
Wael_H 5:34048faec367 162 msgTx.data[4]=(unsigned char)theta;
Wael_H 5:34048faec367 163
Wael_H 5:34048faec367 164 msgTx.data[5]=(unsigned char)(theta>>8);
Wael_H 5:34048faec367 165
Wael_H 5:34048faec367 166 msgTx.data[6]=sens;
Wael_H 5:34048faec367 167
Wael_H 5:34048faec367 168
Wael_H 5:34048faec367 169 can.write(msgTx);
Wael_H 5:34048faec367 170 }
Wael_H 5:34048faec367 171
Wael_H 5:34048faec367 172 /****************************************************************************************/
Wael_H 5:34048faec367 173
Wael_H 5:34048faec367 174 /* FUNCTION NAME: Rotate */
Wael_H 5:34048faec367 175
Wael_H 5:34048faec367 176 /* DESCRIPTION : Transmission CAN correspondant à une rotation */
Wael_H 5:34048faec367 177 /****************************************************************************************/
Wael_H 5:34048faec367 178 void Rotate (signed short angle)
Wael_H 5:34048faec367 179 {
Wael_H 5:34048faec367 180
Wael_H 5:34048faec367 181 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 182
Wael_H 5:34048faec367 183 msgTx.id=ASSERVISSEMENT_ROTATION; // Tx rotation autour du centre du robot
Wael_H 5:34048faec367 184
Wael_H 5:34048faec367 185 msgTx.len=2;
Wael_H 5:34048faec367 186
Wael_H 5:34048faec367 187 msgTx.format=CANStandard;
Wael_H 5:34048faec367 188
Wael_H 5:34048faec367 189 msgTx.type=CANData;
Wael_H 5:34048faec367 190
Wael_H 5:34048faec367 191 // Angle signé sur 2 octets
Wael_H 5:34048faec367 192
Wael_H 5:34048faec367 193 msgTx.data[0]=(unsigned char)angle;
Wael_H 5:34048faec367 194
Wael_H 5:34048faec367 195 msgTx.data[1]=(unsigned char)(angle>>8);
Wael_H 5:34048faec367 196
Wael_H 5:34048faec367 197
Wael_H 5:34048faec367 198 can.write(msgTx);
Wael_H 5:34048faec367 199 }
Wael_H 5:34048faec367 200
Wael_H 5:34048faec367 201
Wael_H 5:34048faec367 202 /*********************************************************************************************/
Wael_H 5:34048faec367 203
Wael_H 5:34048faec367 204 /* FUNCTION NAME: GoStraight */
Wael_H 5:34048faec367 205 /* DESCRIPTION : Transmission CAN correspondant à une ligne droite, avec ou sans recalage */
Wael_H 5:34048faec367 206
Wael_H 5:34048faec367 207 /* recalage : 0 => pas de recalage */
Wael_H 5:34048faec367 208
Wael_H 5:34048faec367 209 /* 1 => recalage en X */
Wael_H 5:34048faec367 210
Wael_H 5:34048faec367 211 /* 2 => Recalage en Y */
Wael_H 5:34048faec367 212
Wael_H 5:34048faec367 213 /* newValue : Uniquement en cas de recalage, indique la nouvelle valeur de l'odo */
Wael_H 5:34048faec367 214
Wael_H 5:34048faec367 215 /* isEnchainement : Indique si il faut executer l'instruction en enchainement */
Wael_H 5:34048faec367 216
Wael_H 5:34048faec367 217 /* 0 => non */
Wael_H 5:34048faec367 218
Wael_H 5:34048faec367 219 /* 1 => oui */
Wael_H 5:34048faec367 220
Wael_H 5:34048faec367 221 /* 2 => dernière instruction de l'enchainement */
Wael_H 5:34048faec367 222 /*********************************************************************************************/
Wael_H 5:34048faec367 223 void GoStraight (signed short distance,unsigned char recalage, unsigned short newValue, unsigned char isEnchainement)
Wael_H 5:34048faec367 224 {
Wael_H 5:34048faec367 225
Wael_H 5:34048faec367 226 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 227
Wael_H 5:34048faec367 228 msgTx.id=ASSERVISSEMENT_RECALAGE;
Wael_H 5:34048faec367 229
Wael_H 5:34048faec367 230 msgTx.len=6;
Wael_H 5:34048faec367 231
Wael_H 5:34048faec367 232 msgTx.format=CANStandard;
Wael_H 5:34048faec367 233
Wael_H 5:34048faec367 234 msgTx.type=CANData;
Wael_H 5:34048faec367 235
Wael_H 5:34048faec367 236 // x sur 2 octets
Wael_H 5:34048faec367 237
Wael_H 5:34048faec367 238 msgTx.data[0]=(unsigned char)distance;
Wael_H 5:34048faec367 239
Wael_H 5:34048faec367 240 msgTx.data[1]=(unsigned char)(distance>>8);
Wael_H 5:34048faec367 241
Wael_H 5:34048faec367 242 //Recalage sur 1 octet
Wael_H 5:34048faec367 243
Wael_H 5:34048faec367 244 msgTx.data[2]=recalage;
Wael_H 5:34048faec367 245
Wael_H 5:34048faec367 246 //Valeur du recalage sur 2 octets
Wael_H 5:34048faec367 247
Wael_H 5:34048faec367 248 msgTx.data[3]=(unsigned char)newValue;
Wael_H 5:34048faec367 249
Wael_H 5:34048faec367 250 msgTx.data[4]=(unsigned char)(newValue>>8);
Wael_H 5:34048faec367 251
Wael_H 5:34048faec367 252 //Enchainement sur 1 octet
Wael_H 5:34048faec367 253
Wael_H 5:34048faec367 254 msgTx.data[5]=isEnchainement;
Wael_H 5:34048faec367 255
Wael_H 5:34048faec367 256
Wael_H 5:34048faec367 257 can.write(msgTx);
Wael_H 5:34048faec367 258
Wael_H 5:34048faec367 259 //wait_ms(500);
Wael_H 5:34048faec367 260 }
Wael_H 5:34048faec367 261
Wael_H 5:34048faec367 262 /********************************************************************************************/
Wael_H 5:34048faec367 263
Wael_H 5:34048faec367 264 /* FUNCTION NAME: BendRadius */
Wael_H 5:34048faec367 265
Wael_H 5:34048faec367 266 /* DESCRIPTION : Transmission CAN correspondant à un rayon de courbure */
Wael_H 5:34048faec367 267 /********************************************************************************************/
Wael_H 5:34048faec367 268 void BendRadius (unsigned short rayon,signed short angle,signed char sens, unsigned char enchainement)
Wael_H 5:34048faec367 269 {
Wael_H 5:34048faec367 270
Wael_H 5:34048faec367 271 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 272
Wael_H 5:34048faec367 273 msgTx.id=ASSERVISSEMENT_COURBURE; // tx asservissement rayon de courbure
Wael_H 5:34048faec367 274
Wael_H 5:34048faec367 275 msgTx.len=6;
Wael_H 5:34048faec367 276
Wael_H 5:34048faec367 277 msgTx.format=CANStandard;
Wael_H 5:34048faec367 278
Wael_H 5:34048faec367 279 msgTx.type=CANData;
Wael_H 5:34048faec367 280
Wael_H 5:34048faec367 281 // Rayon sur 2 octets
Wael_H 5:34048faec367 282
Wael_H 5:34048faec367 283 msgTx.data[0]=(unsigned char)rayon;
Wael_H 5:34048faec367 284
Wael_H 5:34048faec367 285 msgTx.data[1]=(unsigned char)(rayon>>8);
Wael_H 5:34048faec367 286
Wael_H 5:34048faec367 287 // Angle signé sur 2 octets
Wael_H 5:34048faec367 288
Wael_H 5:34048faec367 289 msgTx.data[2]=(unsigned char)angle;
Wael_H 5:34048faec367 290
Wael_H 5:34048faec367 291 msgTx.data[3]=(unsigned char)(angle>>8);
Wael_H 5:34048faec367 292
Wael_H 5:34048faec367 293 // Sens signé sur 1 octet
Wael_H 5:34048faec367 294
Wael_H 5:34048faec367 295 msgTx.data[4]=sens;
Wael_H 5:34048faec367 296
Wael_H 5:34048faec367 297 // Enchainement sur 1 octet
Wael_H 5:34048faec367 298
Wael_H 5:34048faec367 299 msgTx.data[5]=enchainement;
Wael_H 5:34048faec367 300
Wael_H 5:34048faec367 301
Wael_H 5:34048faec367 302 can.write(msgTx);
Wael_H 5:34048faec367 303 }
Wael_H 5:34048faec367 304
Wael_H 5:34048faec367 305 void SetOdometrie (unsigned short canId, unsigned short x,unsigned short y,signed short theta)
Wael_H 5:34048faec367 306 {
Wael_H 5:34048faec367 307
Wael_H 5:34048faec367 308 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 309
Wael_H 5:34048faec367 310 msgTx.id=canId;
Wael_H 5:34048faec367 311
Wael_H 5:34048faec367 312 msgTx.format=CANStandard;
Wael_H 5:34048faec367 313
Wael_H 5:34048faec367 314 msgTx.type=CANData;
Wael_H 5:34048faec367 315
Wael_H 5:34048faec367 316 msgTx.len=6;
Wael_H 5:34048faec367 317
Wael_H 5:34048faec367 318
Wael_H 5:34048faec367 319 // x sur 2 octets
Wael_H 5:34048faec367 320
Wael_H 5:34048faec367 321 msgTx.data[0]=(unsigned char)x;
Wael_H 5:34048faec367 322
Wael_H 5:34048faec367 323 msgTx.data[1]=(unsigned char)(x>>8);
Wael_H 5:34048faec367 324
Wael_H 5:34048faec367 325 // y sur 2 octets
Wael_H 5:34048faec367 326
Wael_H 5:34048faec367 327 msgTx.data[2]=(unsigned char)y;
Wael_H 5:34048faec367 328
Wael_H 5:34048faec367 329 msgTx.data[3]=(unsigned char)(y>>8);
Wael_H 5:34048faec367 330
Wael_H 5:34048faec367 331 // theta signé sur 2 octets
Wael_H 5:34048faec367 332
Wael_H 5:34048faec367 333 msgTx.data[4]=(unsigned char)theta;
Wael_H 5:34048faec367 334
Wael_H 5:34048faec367 335 msgTx.data[5]=(unsigned char)(theta>>8);
Wael_H 5:34048faec367 336
Wael_H 5:34048faec367 337
Wael_H 5:34048faec367 338 can.write(msgTx);
Wael_H 5:34048faec367 339 }
Wael_H 5:34048faec367 340
Wael_H 5:34048faec367 341 /****************************************************************************************/
Wael_H 5:34048faec367 342
Wael_H 5:34048faec367 343 /* FUNCTION NAME: setAsservissementEtat */
Wael_H 5:34048faec367 344
Wael_H 5:34048faec367 345 /* DESCRIPTION : Activer ou désactiver l'asservissement */
Wael_H 5:34048faec367 346 /****************************************************************************************/
Wael_H 5:34048faec367 347 void setAsservissementEtat(unsigned char enable)
Wael_H 5:34048faec367 348 {
Wael_H 5:34048faec367 349
Wael_H 5:34048faec367 350 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 351
Wael_H 5:34048faec367 352 msgTx.id=ASSERVISSEMENT_ENABLE; // Tx rotation autour du centre du robot
Wael_H 5:34048faec367 353
Wael_H 5:34048faec367 354 msgTx.len=1;
Wael_H 5:34048faec367 355
Wael_H 5:34048faec367 356 msgTx.format=CANStandard;
Wael_H 5:34048faec367 357
Wael_H 5:34048faec367 358 msgTx.type=CANData;
Wael_H 5:34048faec367 359
Wael_H 5:34048faec367 360 // Angle signé sur 2 octets
Wael_H 5:34048faec367 361
Wael_H 5:34048faec367 362 msgTx.data[0]=(unsigned char)((enable==0)?0:1);
Wael_H 5:34048faec367 363
Wael_H 5:34048faec367 364
Wael_H 5:34048faec367 365 can.write(msgTx);
Wael_H 5:34048faec367 366 }
Wael_H 5:34048faec367 367
Wael_H 5:34048faec367 368
Wael_H 5:34048faec367 369 /****************************************************************************************/
Wael_H 5:34048faec367 370
Wael_H 5:34048faec367 371 /* FUNCTION NAME: SendSpeed */
Wael_H 5:34048faec367 372
Wael_H 5:34048faec367 373 /* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */
Wael_H 5:34048faec367 374 /****************************************************************************************/
Wael_H 5:34048faec367 375 void SendSpeed (unsigned short vitesse, unsigned short acceleration)
Wael_H 5:34048faec367 376 {
Wael_H 5:34048faec367 377
Wael_H 5:34048faec367 378 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 379
Wael_H 5:34048faec367 380 msgTx.id=ASSERVISSEMENT_CONFIG;
Wael_H 5:34048faec367 381
Wael_H 5:34048faec367 382 msgTx.format=CANStandard;
Wael_H 5:34048faec367 383
Wael_H 5:34048faec367 384 msgTx.type=CANData;
Wael_H 5:34048faec367 385
Wael_H 5:34048faec367 386 msgTx.len=4;
Wael_H 5:34048faec367 387
Wael_H 5:34048faec367 388 msgTx.data[0]=(unsigned char)(vitesse&0x00FF);
Wael_H 5:34048faec367 389
Wael_H 5:34048faec367 390 msgTx.data[1]=(unsigned char)((vitesse&0xFF00)>>8);
Wael_H 5:34048faec367 391
Wael_H 5:34048faec367 392 msgTx.data[2]=(unsigned char)(acceleration&0x00FF);
Wael_H 5:34048faec367 393
Wael_H 5:34048faec367 394
Wael_H 5:34048faec367 395 msgTx.data[3]=(unsigned char)((acceleration&0xFF00)>>8);
Wael_H 5:34048faec367 396
Wael_H 5:34048faec367 397
Wael_H 5:34048faec367 398 can.write(msgTx);
Wael_H 5:34048faec367 399
Wael_H 5:34048faec367 400
Wael_H 5:34048faec367 401 }
Wael_H 5:34048faec367 402
Wael_H 5:34048faec367 403 /****************************************************************************************/
Wael_H 5:34048faec367 404
Wael_H 5:34048faec367 405 /* FUNCTION NAME: SendSpeedDecel */
Wael_H 5:34048faec367 406
Wael_H 5:34048faec367 407 /* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */
Wael_H 5:34048faec367 408 /****************************************************************************************/
Wael_H 5:34048faec367 409
Wael_H 5:34048faec367 410 void SendSpeedDecel (unsigned short vitesse, unsigned short deceleration)
Wael_H 5:34048faec367 411 {
Wael_H 5:34048faec367 412
Wael_H 5:34048faec367 413 CANMessage msgTx=CANMessage();
Wael_H 5:34048faec367 414
Wael_H 5:34048faec367 415 msgTx.id=ASSERVISSEMENT_CONFIG_DECEL;
Wael_H 5:34048faec367 416
Wael_H 5:34048faec367 417 msgTx.format=CANStandard;
Wael_H 5:34048faec367 418
Wael_H 5:34048faec367 419 msgTx.type=CANData;
Wael_H 5:34048faec367 420
Wael_H 5:34048faec367 421 msgTx.len=4;
Wael_H 5:34048faec367 422
Wael_H 5:34048faec367 423 msgTx.data[0]=(unsigned char)(vitesse&0x00FF);
Wael_H 5:34048faec367 424
Wael_H 5:34048faec367 425 msgTx.data[1]=(unsigned char)((vitesse&0xFF00)>>8);
Wael_H 5:34048faec367 426
Wael_H 5:34048faec367 427 msgTx.data[2]=(unsigned char)(deceleration&0x00FF);
Wael_H 5:34048faec367 428
Wael_H 5:34048faec367 429 msgTx.data[3]=(unsigned char)((deceleration&0xFF00)>>8);
Wael_H 5:34048faec367 430
Wael_H 5:34048faec367 431 can.write(msgTx);
Wael_H 5:34048faec367 432
Wael_H 5:34048faec367 433
Wael_H 5:34048faec367 434 }