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: ADC
main.cpp@108:5a5126fe974e, 2020-01-31 (annotated)
- 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?
User | Revision | Line number | New 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 | } |