NXPCup_Cachan / Mbed 2 deprecated S4_bluetooth_V2_bibli

Dependencies:   mbed

Committer:
EISR
Date:
Thu Feb 06 08:22:13 2020 +0000
Revision:
1:13af94a28e0d
Parent:
0:9e8a54e32f30
V2 fonctionnelle commentee

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EISR 0:9e8a54e32f30 1 #include "mbed.h"
EISR 0:9e8a54e32f30 2 #include "math.h"
EISR 0:9e8a54e32f30 3 #include "bluetoothV2bibli.h"
EISR 0:9e8a54e32f30 4
EISR 0:9e8a54e32f30 5 Serial pc(USBTX, USBRX,460800);
EISR 0:9e8a54e32f30 6 Serial blueth(p9, p10,115200); // tx,rx,baudrate
EISR 0:9e8a54e32f30 7
EISR 0:9e8a54e32f30 8
EISR 1:13af94a28e0d 9 static int blueRxBuffer[6]; // Buffer de réception de la liaison serie bluetooth
EISR 1:13af94a28e0d 10 static int blueTxBuffer[6]={240,0,0,0,0,15}; // Buffer de transmission de la liaison serie bluetooth
EISR 1:13af94a28e0d 11 static int RxBuffer[4][6]; // Copie de blueRxbuffer à l'issue de la reception des 4 trames
EISR 0:9e8a54e32f30 12 static int paramRx[4][2]; //0 KP 1 KI 2 KD 3 SPEED
EISR 0:9e8a54e32f30 13 static short flagR=0;
EISR 0:9e8a54e32f30 14
EISR 0:9e8a54e32f30 15
EISR 0:9e8a54e32f30 16 /********************************** Initialisation *************************************/
EISR 0:9e8a54e32f30 17
EISR 0:9e8a54e32f30 18 void init_blueth(void)
EISR 0:9e8a54e32f30 19 {
EISR 0:9e8a54e32f30 20 blueth.attach(&receptionBlu, Serial::RxIrq); //Creation interruption de reception
EISR 0:9e8a54e32f30 21 blueth.printf("Hello world"); //message de test
EISR 0:9e8a54e32f30 22 }
EISR 0:9e8a54e32f30 23
EISR 0:9e8a54e32f30 24
EISR 0:9e8a54e32f30 25 /******************************* Fonctions de transmission *****************************/
EISR 0:9e8a54e32f30 26
EISR 0:9e8a54e32f30 27 void transmitBlu(void)
EISR 0:9e8a54e32f30 28 {
EISR 0:9e8a54e32f30 29 static short i = 0;
EISR 1:13af94a28e0d 30 if(blueth.writable()) //fonctionne si la liaison est libre
EISR 0:9e8a54e32f30 31 {
EISR 1:13af94a28e0d 32 blueth.putc(blueTxBuffer[i]); //transmission de la trame de 6 octets dans le buffer
EISR 0:9e8a54e32f30 33 i++;
EISR 0:9e8a54e32f30 34 }
EISR 0:9e8a54e32f30 35 if(i>5)
EISR 0:9e8a54e32f30 36 {
EISR 0:9e8a54e32f30 37 i=0;
EISR 1:13af94a28e0d 38 blueth.attach(NULL, Serial::TxIrq); // on coupe la liaison (ISR de transmssion) tant que pas necessaire pour permettre la reception
EISR 0:9e8a54e32f30 39 }
EISR 0:9e8a54e32f30 40 }
EISR 0:9e8a54e32f30 41
EISR 1:13af94a28e0d 42 void formatTrameT(short reg, int val) // Creation de la trame au format Start Registre Donnees Donnees Donnees Stop
EISR 0:9e8a54e32f30 43 {
EISR 0:9e8a54e32f30 44 blueTxBuffer[1]=reg;
EISR 1:13af94a28e0d 45 blueTxBuffer[2]=((val&0xFF0000)>>16); //Conversion sur trois octets independants de la donnee
EISR 0:9e8a54e32f30 46 blueTxBuffer[3]=((val&0x00FF00)>>8);
EISR 0:9e8a54e32f30 47 blueTxBuffer[4]=((val&0x0000FF));
EISR 0:9e8a54e32f30 48
EISR 1:13af94a28e0d 49 blueth.attach(&transmitBlu, Serial::TxIrq); //Ouverture de la liaison (ISR de transmission)
EISR 0:9e8a54e32f30 50 }
EISR 0:9e8a54e32f30 51
EISR 0:9e8a54e32f30 52
EISR 0:9e8a54e32f30 53 /****************************** Fonctions de reception ******************************/
EISR 0:9e8a54e32f30 54
EISR 0:9e8a54e32f30 55 void receptionBlu(void)
EISR 0:9e8a54e32f30 56 {
EISR 0:9e8a54e32f30 57 static short j = 0, compteur=0;
EISR 0:9e8a54e32f30 58
EISR 1:13af94a28e0d 59 if(blueth.readable()) //Si la liaison est libre
EISR 0:9e8a54e32f30 60 {
EISR 0:9e8a54e32f30 61 blueRxBuffer[j]=blueth.getc(); //reception
EISR 1:13af94a28e0d 62 j++; //Permet d'ecrire les 6 octets dans blueRxBuffer
EISR 0:9e8a54e32f30 63 if(j>5)
EISR 0:9e8a54e32f30 64 {
EISR 0:9e8a54e32f30 65 j=0;
EISR 1:13af94a28e0d 66 for(short i=0;i<6;i++)RxBuffer[compteur][i]=blueRxBuffer[i]; //Si une trame est reçue, on la copie dans RxBuffer
EISR 0:9e8a54e32f30 67 compteur++;
EISR 1:13af94a28e0d 68 if(compteur>4) //Permet de savoir si les 4 donnees KP KI KD et SPEED ont été transmises
EISR 0:9e8a54e32f30 69 {
EISR 0:9e8a54e32f30 70 compteur=0;
EISR 1:13af94a28e0d 71 flagR=1; //Permet la gestion de decomposition de trames
EISR 0:9e8a54e32f30 72 }
EISR 0:9e8a54e32f30 73 }
EISR 0:9e8a54e32f30 74 }
EISR 0:9e8a54e32f30 75 }
EISR 0:9e8a54e32f30 76
EISR 1:13af94a28e0d 77 int get_val_pc(short reg) //Permet de connaitre la donnee associée à un registre
EISR 0:9e8a54e32f30 78 {
EISR 0:9e8a54e32f30 79 short indice;
EISR 1:13af94a28e0d 80 if(flagR==1) // Decompose les trames si reception de 4 nouvelles trames
EISR 0:9e8a54e32f30 81 {
EISR 1:13af94a28e0d 82 decomp_trame();
EISR 0:9e8a54e32f30 83 flagR=0;
EISR 0:9e8a54e32f30 84 }
EISR 1:13af94a28e0d 85 if(reg == 30)indice = 0;
EISR 0:9e8a54e32f30 86 if(reg == 45)indice = 1;
EISR 0:9e8a54e32f30 87 if(reg == 60)indice = 2;
EISR 0:9e8a54e32f30 88 if(reg == 75)indice = 3;
EISR 1:13af94a28e0d 89 return paramRx[indice][1]; //renvoie la valeur stocke pour un registre
EISR 0:9e8a54e32f30 90 }
EISR 0:9e8a54e32f30 91
EISR 0:9e8a54e32f30 92 void decomp_trame(void)
EISR 0:9e8a54e32f30 93 {
EISR 0:9e8a54e32f30 94 for(short i=0;i<4;i++)
EISR 0:9e8a54e32f30 95 {
EISR 1:13af94a28e0d 96 if(RxBuffer[i][0]== 240 && RxBuffer[i][5]==15) //verification des bits start et stop
EISR 0:9e8a54e32f30 97 {
EISR 1:13af94a28e0d 98 paramRx[i][0]= RxBuffer[i][1]; //ecriture du registre
EISR 0:9e8a54e32f30 99 paramRx[i][1] = RxBuffer[i][2]*pow((double)2,(double)16)+RxBuffer[i][3]*pow((double)2,(double)8)+RxBuffer[i][4];
EISR 1:13af94a28e0d 100 //recomposition de la donnee stockee sur 3 octets
EISR 0:9e8a54e32f30 101 }
EISR 0:9e8a54e32f30 102 }
EISR 0:9e8a54e32f30 103 }