ddd
Dependencies: mbed CMSIS_DSP_5
main.cpp
- Committer:
- javiervicente
- Date:
- 2019-10-17
- Revision:
- 7:b5d028a49c98
- Parent:
- 6:2a9b1cc25f1b
File content as of revision 7:b5d028a49c98:
#include "mbed.h" #include "datos.h" #include "arm_math.h" Timer timer; int tiempo; float resultado; float calcularRMS(int16_t *datos, int longitud); float calcularRMS2(int16_t *datos, int longitud); float calcularRMS3(int16_t *datos, int longitud); int main() { timer.reset(); timer.start(); resultado=calcularRMS(datos, 500); timer.stop(); printf("****El valor Vrms es %f calculado en %d us ****\n",resultado,timer.read_us()); timer.reset(); timer.start(); resultado=calcularRMS2(datos, 500); timer.stop(); printf("****El valor Vrms2 es %f calculado en %d us ****\n",resultado,timer.read_us()); timer.reset(); timer.start(); resultado=calcularRMS3(datos, 500); timer.stop(); printf("****El valor Vrms3 es %f calculado en %d us ****\n",resultado,timer.read_us()); } float calcularRMS(int16_t *datos, int longitud) { int64_t sumatorio=0; int32_t producto; float constante=0.1007080078125e-03; //3.3/2^15 for (int n=0; n<longitud; n++) { producto=datos[n]*datos[n]; sumatorio+=producto; } return sqrt((float)sumatorio/longitud)*constante; } float calcularRMS2(int16_t *datos, int longitud) { float constante=1.007080078125000e-04; //3.3/(2^15) q15_t resultado=0.0; arm_rms_q15 ((q15_t *)(datos), longitud, &resultado); return resultado*constante; } float calcularRMS3(int16_t *datos, int longitud) { int32_t producto; float constante=0.1007080078125e-03; //3.3/2^15 int64_t sumatorio=datos[0]*datos[0]; for (int n=1; n<longitud; n++) { producto=datos[n]*datos[n]; sumatorio+=producto; } return sqrt((float)sumatorio/longitud)*constante; }