Marlon Fulla / Mbed 2 deprecated 2014FEB04_Vibrometro_Xbee

Dependencies:   mbed

Fork of 2014FEB4_Vibrometro_Xbee by Marlon Fulla

Committer:
marlonfulla
Date:
Wed Feb 05 00:18:59 2014 +0000
Revision:
8:1814fd00a71e
Parent:
7:d1eba8f22f3e
En esta versi?n se logra reducir el tiempo de lecturaSD-transmisi?n en el modo de empaquetamiento de 100 datos en comparaci?n con el control de flujo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jlpalaci 0:1eb268d3d14e 1 #include "mbed.h"
marlonfulla 8:1814fd00a71e 2 #include <string>
marlonfulla 8:1814fd00a71e 3 #include <iostream>
jlpalaci 0:1eb268d3d14e 4 #include "SDFileSystem.h"
jlpalaci 7:d1eba8f22f3e 5 //#include <string>
jlpalaci 0:1eb268d3d14e 6
jlpalaci 0:1eb268d3d14e 7 //Pines de conversión A/D asociados a los ejes del acelerómetro triaxial MMA7361L
jlpalaci 0:1eb268d3d14e 8 AnalogIn ain_x(PTB0);
jlpalaci 0:1eb268d3d14e 9 AnalogIn ain_y(PTB1);
jlpalaci 0:1eb268d3d14e 10 AnalogIn ain_z(PTB2);
jlpalaci 0:1eb268d3d14e 11 //Pines digitales para configurar el acelerómetro triaxial MMA7361L
jlpalaci 0:1eb268d3d14e 12 DigitalOut slp(PTB3);
jlpalaci 0:1eb268d3d14e 13 DigitalOut g_sel(PTC2);
jlpalaci 0:1eb268d3d14e 14 //Cronómetro
jlpalaci 0:1eb268d3d14e 15 Timer reloj;
jlpalaci 0:1eb268d3d14e 16 //SD FAT system
jlpalaci 0:1eb268d3d14e 17 SDFileSystem sd(PTD2, PTD3, PTD1, PTD0,"sd");
jlpalaci 0:1eb268d3d14e 18 //Comunicación Xbee
jlpalaci 0:1eb268d3d14e 19 Serial xbee(PTA2,PTA1);
marlonfulla 8:1814fd00a71e 20
jlpalaci 4:29f56a8a8390 21 //Serial xbee(USBTX,USBRX);
jlpalaci 0:1eb268d3d14e 22
jlpalaci 6:99df19f0f6eb 23
jlpalaci 3:8125d6b7afff 24 //Definición de variables globales
jlpalaci 0:1eb268d3d14e 25 FILE * fp1;
jlpalaci 0:1eb268d3d14e 26 FILE * fp2;
jlpalaci 2:a2b90ac0b81b 27 int inicio = 0;
jlpalaci 2:a2b90ac0b81b 28 int fin = 0;
jlpalaci 4:29f56a8a8390 29 int samples = 1;
jlpalaci 4:29f56a8a8390 30 char read [64] = {0};
jlpalaci 4:29f56a8a8390 31 char readvar [512] = {0};
marlonfulla 8:1814fd00a71e 32 int imax;
marlonfulla 8:1814fd00a71e 33 int delay=27;
marlonfulla 8:1814fd00a71e 34
jlpalaci 0:1eb268d3d14e 35
jlpalaci 0:1eb268d3d14e 36 int main()
jlpalaci 0:1eb268d3d14e 37 {
marlonfulla 8:1814fd00a71e 38 std::string readvarstr;
marlonfulla 8:1814fd00a71e 39 std::string xbeeout;
jlpalaci 6:99df19f0f6eb 40 //xbee.baud(9600);
jlpalaci 6:99df19f0f6eb 41 xbee.baud(115200);
jlpalaci 4:29f56a8a8390 42 reloj.start();
jlpalaci 0:1eb268d3d14e 43 slp = 1; //Habilitado el modo de operación normal (MMA7361L)
jlpalaci 0:1eb268d3d14e 44 g_sel = 0; //Ajusta la sensibilidad a 1.5g (cambiar a 1 para ajustar sensibilidad a 6g)
jlpalaci 5:c208cb05dd4b 45
marlonfulla 8:1814fd00a71e 46
jlpalaci 0:1eb268d3d14e 47 while(1) {
jlpalaci 4:29f56a8a8390 48 //char read [64] = {0};
jlpalaci 4:29f56a8a8390 49 //char readvar [512] = {0};
jlpalaci 4:29f56a8a8390 50
jlpalaci 3:8125d6b7afff 51 xbee.scanf("%s",read); //Espera la recepción de caracteres
marlonfulla 8:1814fd00a71e 52
jlpalaci 2:a2b90ac0b81b 53 switch(read[0]) {
jlpalaci 4:29f56a8a8390 54 case 'r': //Lee la información de la memoria SD y la envía mediante Xbee
jlpalaci 6:99df19f0f6eb 55 //if(read[1]=='1') { //Nombre para modulo 1...
jlpalaci 6:99df19f0f6eb 56 fp2 = fopen ("/sd/test.txt","r");
marlonfulla 8:1814fd00a71e 57
marlonfulla 8:1814fd00a71e 58 //El numero de muestras debe ser multiplo de 42
marlonfulla 8:1814fd00a71e 59 imax=samples/42;
marlonfulla 8:1814fd00a71e 60
marlonfulla 8:1814fd00a71e 61 xbee.printf("%s %d \n","numero de lineas",imax);
marlonfulla 8:1814fd00a71e 62
marlonfulla 8:1814fd00a71e 63 reloj.start();
marlonfulla 8:1814fd00a71e 64
marlonfulla 8:1814fd00a71e 65 for (int i=1; i<=imax; i++) {
marlonfulla 8:1814fd00a71e 66 fscanf (fp2,"%s \n",readvar);
marlonfulla 8:1814fd00a71e 67
marlonfulla 8:1814fd00a71e 68 for(int l=1;l<=5;l++){
marlonfulla 8:1814fd00a71e 69 xbee.printf("%s",string (readvar,100*(l-1),100));
marlonfulla 8:1814fd00a71e 70 wait_ms(28); //pausa entre paquetes
marlonfulla 8:1814fd00a71e 71 }
marlonfulla 8:1814fd00a71e 72 xbee.printf("%s \n",string (readvar,501,504));
marlonfulla 8:1814fd00a71e 73 wait_ms(28); ////pausa entre paquetes
jlpalaci 6:99df19f0f6eb 74 }
marlonfulla 8:1814fd00a71e 75 xbee.printf("%d \n",reloj.read_us());
marlonfulla 8:1814fd00a71e 76
marlonfulla 8:1814fd00a71e 77 /* for(int k=0; k<5; k++) {
marlonfulla 8:1814fd00a71e 78 for(int j=1; j<=100; j++) {
marlonfulla 8:1814fd00a71e 79 xbeeout[j]=readvar[100*k+j];
marlonfulla 8:1814fd00a71e 80 }
marlonfulla 8:1814fd00a71e 81 xbee.printf("%s",xbeeout)
marlonfulla 8:1814fd00a71e 82 wait_ms(27);
marlonfulla 8:1814fd00a71e 83 }
marlonfulla 8:1814fd00a71e 84 */
marlonfulla 8:1814fd00a71e 85 /* for(int j=1; j<=4; j++) {
marlonfulla 8:1814fd00a71e 86 xbeeout[j]=readvar[500+j];
marlonfulla 8:1814fd00a71e 87 }
marlonfulla 8:1814fd00a71e 88
marlonfulla 8:1814fd00a71e 89 xbee.printf("%s",xbeeout);
marlonfulla 8:1814fd00a71e 90 wait_ms(27);
marlonfulla 8:1814fd00a71e 91 xbee.putc('\n');
marlonfulla 8:1814fd00a71e 92 */
marlonfulla 8:1814fd00a71e 93
marlonfulla 8:1814fd00a71e 94 // xbee.printf("%s",readvar);
marlonfulla 8:1814fd00a71e 95 // xbee.putc('\n');
marlonfulla 8:1814fd00a71e 96
marlonfulla 8:1814fd00a71e 97
marlonfulla 8:1814fd00a71e 98
jlpalaci 6:99df19f0f6eb 99 fclose (fp2);
jlpalaci 6:99df19f0f6eb 100 //}
jlpalaci 2:a2b90ac0b81b 101 break;
jlpalaci 3:8125d6b7afff 102 case 't': //Envía el tiempo de adquisición
jlpalaci 6:99df19f0f6eb 103 //if(read[1]=='1') //Nombre para modulo 1...
jlpalaci 6:99df19f0f6eb 104 xbee.printf("%010d\n",fin-inicio);
jlpalaci 4:29f56a8a8390 105 break;
jlpalaci 4:29f56a8a8390 106 default: //Inicia la conversión A/D y la almacena en la memoria SD
jlpalaci 4:29f56a8a8390 107 samples = atoi(read);
jlpalaci 4:29f56a8a8390 108 //Inicio del reloj para determinar la tasa de muestreo
jlpalaci 4:29f56a8a8390 109 fp1 = fopen ("/sd/test.txt","w");
jlpalaci 4:29f56a8a8390 110 reloj.reset();
jlpalaci 4:29f56a8a8390 111 inicio = reloj.read_us();
jlpalaci 4:29f56a8a8390 112 //Ciclo de lectura de los ejes x, y, z del acelerómetro triaxial MMA7361L
jlpalaci 4:29f56a8a8390 113 for(int i=1; i<=samples; i++) {
jlpalaci 4:29f56a8a8390 114 fprintf (fp1,"%04X%04X%04X",ain_x.read_u16(),ain_y.read_u16(),ain_z.read_u16());
marlonfulla 8:1814fd00a71e 115 if((i>=42) && (i%42==0)) fprintf (fp1,"\n"); //permite escribir en la memoria SD líneas cada una con 42 muestras ó 502 caracteres
jlpalaci 4:29f56a8a8390 116 }
jlpalaci 4:29f56a8a8390 117 //Tiempo transcurrido desde la ejecución del reloj
jlpalaci 4:29f56a8a8390 118 fin = reloj.read_us();
jlpalaci 4:29f56a8a8390 119 fclose (fp1);
jlpalaci 3:8125d6b7afff 120 break;
jlpalaci 0:1eb268d3d14e 121 }
jlpalaci 0:1eb268d3d14e 122 }
jlpalaci 0:1eb268d3d14e 123 }