NXPCup_Cachan / Mbed 2 deprecated S4_bluetooth_V2_bibli

Dependencies:   mbed

Committer:
EISR
Date:
Thu Feb 06 07:46:51 2020 +0000
Revision:
0:9e8a54e32f30
Child:
1:13af94a28e0d
V2 fonctionnel

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 0:9e8a54e32f30 9 static int blueRxBuffer[6]; // Buffer de réception de la liaison série bluetooth
EISR 0:9e8a54e32f30 10 static int blueTxBuffer[6]={240,0,0,0,0,15}; // Buffer de transmission de la liaison série bluetooth
EISR 0:9e8a54e32f30 11 static int RxBuffer[4][6];
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 0:9e8a54e32f30 30 if(blueth.writable()) //fonctionne si la liaison est libre
EISR 0:9e8a54e32f30 31 {
EISR 0:9e8a54e32f30 32 blueth.putc(blueTxBuffer[i]); //transmission de la trame de 6 octets
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 0:9e8a54e32f30 38 blueth.attach(NULL, Serial::TxIrq);
EISR 0:9e8a54e32f30 39 }
EISR 0:9e8a54e32f30 40 }
EISR 0:9e8a54e32f30 41
EISR 0:9e8a54e32f30 42 void formatTrameT(short reg, int val)
EISR 0:9e8a54e32f30 43 {
EISR 0:9e8a54e32f30 44 blueTxBuffer[1]=reg;
EISR 0:9e8a54e32f30 45 blueTxBuffer[2]=((val&0xFF0000)>>16); //Conversion sur trois octets independants
EISR 0:9e8a54e32f30 46 blueTxBuffer[3]=((val&0x00FF00)>>8);
EISR 0:9e8a54e32f30 47 blueTxBuffer[4]=((val&0x0000FF));
EISR 0:9e8a54e32f30 48
EISR 0:9e8a54e32f30 49 blueth.attach(&transmitBlu, Serial::TxIrq);
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 0:9e8a54e32f30 59 if(blueth.readable())
EISR 0:9e8a54e32f30 60 {
EISR 0:9e8a54e32f30 61 blueRxBuffer[j]=blueth.getc(); //reception
EISR 0:9e8a54e32f30 62 blueth.putc(blueRxBuffer[j]); //renvoie de la reception pour tester
EISR 0:9e8a54e32f30 63 j++;
EISR 0:9e8a54e32f30 64 if(j>5)
EISR 0:9e8a54e32f30 65 {
EISR 0:9e8a54e32f30 66 j=0;
EISR 0:9e8a54e32f30 67 for(short i=0;i<6;i++)RxBuffer[compteur][i]=blueRxBuffer[i];
EISR 0:9e8a54e32f30 68 compteur++;
EISR 0:9e8a54e32f30 69 if(compteur>4)
EISR 0:9e8a54e32f30 70 {
EISR 0:9e8a54e32f30 71 compteur=0;
EISR 0:9e8a54e32f30 72 flagR=1;
EISR 0:9e8a54e32f30 73 }
EISR 0:9e8a54e32f30 74 }
EISR 0:9e8a54e32f30 75 }
EISR 0:9e8a54e32f30 76 }
EISR 0:9e8a54e32f30 77
EISR 0:9e8a54e32f30 78 int get_val_pc(short reg)
EISR 0:9e8a54e32f30 79 {
EISR 0:9e8a54e32f30 80 short indice;
EISR 0:9e8a54e32f30 81 if(flagR==1)
EISR 0:9e8a54e32f30 82 {
EISR 0:9e8a54e32f30 83 decomp_trame();
EISR 0:9e8a54e32f30 84 flagR=0;
EISR 0:9e8a54e32f30 85 }
EISR 0:9e8a54e32f30 86 if(reg == 30)indice = 0;
EISR 0:9e8a54e32f30 87 if(reg == 45)indice = 1;
EISR 0:9e8a54e32f30 88 if(reg == 60)indice = 2;
EISR 0:9e8a54e32f30 89 if(reg == 75)indice = 3;
EISR 0:9e8a54e32f30 90 return paramRx[indice][1];
EISR 0:9e8a54e32f30 91 }
EISR 0:9e8a54e32f30 92
EISR 0:9e8a54e32f30 93 void decomp_trame(void)
EISR 0:9e8a54e32f30 94 {
EISR 0:9e8a54e32f30 95 for(short i=0;i<4;i++)
EISR 0:9e8a54e32f30 96 {
EISR 0:9e8a54e32f30 97 if(RxBuffer[i][0]== 240 && RxBuffer[i][5]==15)
EISR 0:9e8a54e32f30 98 {
EISR 0:9e8a54e32f30 99 paramRx[i][0]= RxBuffer[i][1];
EISR 0:9e8a54e32f30 100 paramRx[i][1] = RxBuffer[i][2]*pow((double)2,(double)16)+RxBuffer[i][3]*pow((double)2,(double)8)+RxBuffer[i][4];
EISR 0:9e8a54e32f30 101 }
EISR 0:9e8a54e32f30 102 }
EISR 0:9e8a54e32f30 103 }