Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
bluetoothV2bibli.cpp@0:9e8a54e32f30, 2020-02-06 (annotated)
- 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?
User | Revision | Line number | New 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 | } |