Damez / Mbed OS ADC

Dependencies:   ADC

Dependents:   ADC

Committer:
luisquiroga
Date:
Fri Jan 31 13:29:52 2020 +0000
Revision:
108:5a5126fe974e
Parent:
107:5c6c2ba54077
Calculo por terminal.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
luisquiroga 108:5a5126fe974e 1 //Los comentarios son todos mios. Saqué los de Dani pero podés verlos en su código. Agunas cosas las dejé porque me sirvieron.
mbed_official 82:abf1b1785bd7 2
luisquiroga 108:5a5126fe974e 3 #include "mbed.h"
luisquiroga 108:5a5126fe974e 4 //#include "mi_lora.h"
luisquiroga 108:5a5126fe974e 5 #include "medir_frecuencia.h"
luisquiroga 108:5a5126fe974e 6
luisquiroga 108:5a5126fe974e 7 #define MI_ADC_PERIODO_MS 2000 //cada 2 segundos tomo muestras
luisquiroga 108:5a5126fe974e 8 #define CLOCK 32 //frec del micro en MHZ
Jonathan Austin 0:2757d7abb7d9 9
Jonathan Austin 0:2757d7abb7d9 10
luisquiroga 108:5a5126fe974e 11 Serial pc(USBTX, USBRX); //115200 baud rate
mbed_official 102:6979ad8bc0bc 12
luisquiroga 108:5a5126fe974e 13 uint16_t muestras[N_MUESTRAS];
luisquiroga 108:5a5126fe974e 14
luisquiroga 108:5a5126fe974e 15 void funcion_calcularFrec (void)
mbed_official 82:abf1b1785bd7 16 {
luisquiroga 108:5a5126fe974e 17 AnalogIn mi_adc(GPIO1);
luisquiroga 108:5a5126fe974e 18 unsigned int i, for_time, total_time, operation_time;
luisquiroga 108:5a5126fe974e 19 float tiempo_muestreo,frecuencia;
luisquiroga 108:5a5126fe974e 20 Timer timer;
luisquiroga 108:5a5126fe974e 21
luisquiroga 108:5a5126fe974e 22 // calculo cuanto se demora en hacer el ciclo for. En realidad esto está al pedo y podría sacarse.
luisquiroga 108:5a5126fe974e 23 timer.reset();
luisquiroga 108:5a5126fe974e 24 timer.start();
luisquiroga 108:5a5126fe974e 25 for (i=0; i<N_MUESTRAS; i++);
luisquiroga 108:5a5126fe974e 26 for_time=timer.read_us();
luisquiroga 108:5a5126fe974e 27 timer.stop();
luisquiroga 108:5a5126fe974e 28
luisquiroga 108:5a5126fe974e 29 while(1)
luisquiroga 108:5a5126fe974e 30 {
luisquiroga 108:5a5126fe974e 31 thread_sleep_for(MI_ADC_PERIODO_MS); //Cada cuánto tomo las muestras.
luisquiroga 108:5a5126fe974e 32 // primero tomo las muetras
luisquiroga 108:5a5126fe974e 33 timer.reset();
luisquiroga 108:5a5126fe974e 34 timer.start();
luisquiroga 108:5a5126fe974e 35 for(i=0;i<N_MUESTRAS;i++)
luisquiroga 108:5a5126fe974e 36 {
luisquiroga 108:5a5126fe974e 37 muestras[i]=(uint16_t) (ADC_RES_Cuentas*mi_adc.read());
luisquiroga 107:5c6c2ba54077 38 }
luisquiroga 108:5a5126fe974e 39 total_time=timer.read_us();
luisquiroga 108:5a5126fe974e 40 timer.stop();
luisquiroga 108:5a5126fe974e 41 operation_time = total_time-for_time;
luisquiroga 108:5a5126fe974e 42 tiempo_muestreo=float(operation_time)/float(N_MUESTRAS);
luisquiroga 108:5a5126fe974e 43 //Este es el tiempo de muestreo que sale de lo que tarda en tomar una X cantidad de muestras. Para eso está el timer que está en el ciclo for.
luisquiroga 108:5a5126fe974e 44 imprimir_datos(muestras);
luisquiroga 108:5a5126fe974e 45 frecuencia=calcular_frecuencia(muestras,N_MUESTRAS,tiempo_muestreo);
luisquiroga 108:5a5126fe974e 46 printf("Frec=%f[Hz] \n\r\n",frecuencia);
luisquiroga 108:5a5126fe974e 47
Jonathan Austin 0:2757d7abb7d9 48 }
Jonathan Austin 0:2757d7abb7d9 49 }
luisquiroga 108:5a5126fe974e 50
luisquiroga 108:5a5126fe974e 51 int main(void)
luisquiroga 108:5a5126fe974e 52 {
luisquiroga 108:5a5126fe974e 53
luisquiroga 108:5a5126fe974e 54 Thread tarea_calcularFrec(osPriorityNormal,OS_STACK_SIZE,NULL,"ADC" ); //Le doy un hilo, una prioridad.
luisquiroga 108:5a5126fe974e 55 //Thread tarea_lora(osPriorityNormal,OS_STACK_SIZE,NULL,"LoRA" );
luisquiroga 108:5a5126fe974e 56 //sem_leer_data.release();
luisquiroga 108:5a5126fe974e 57 tarea_calcularFrec.start(funcion_calcularFrec); //se define el hilo a ejecutar (creo).
luisquiroga 108:5a5126fe974e 58 //tarea_lora.start(funcion_lora);
luisquiroga 108:5a5126fe974e 59
luisquiroga 108:5a5126fe974e 60 pc.baud(115200);
luisquiroga 108:5a5126fe974e 61 printf("MAIN: Init OK\n\r"); // Esto es para chequear que está todo bien cuando reinicias el micro, lo puso dani.
luisquiroga 108:5a5126fe974e 62
luisquiroga 108:5a5126fe974e 63 //funcion_lora();
luisquiroga 108:5a5126fe974e 64 while(1)
luisquiroga 108:5a5126fe974e 65 {
luisquiroga 108:5a5126fe974e 66 thread_sleep_for(5000);
luisquiroga 108:5a5126fe974e 67 }
luisquiroga 108:5a5126fe974e 68 return 0;
luisquiroga 108:5a5126fe974e 69 }