simple data logger
Dependencies: Buffer MMA8451Q mbed-rtos mbed
logger.cpp
- Committer:
- jhestolano
- Date:
- 2013-06-04
- Revision:
- 0:93d648fde6cf
File content as of revision 0:93d648fde6cf:
#include "logger.h" Logger::Logger(PinName tx, PinName rx) : port(tx, rx), redLed(LED_RED), blueLed(LED_BLUE), greenLed(LED_GREEN), acc(PTE25, PTE24, MMA8451Q_I2C_ADDRESS), //tx_th(tx_thread, (void*)this), data_th(this->data_thread, (void*)this), led_th(this->led_thread, (void*)&blueLed), acc_x(BUF_SIZE) { redLed = 1; blueLed = 1; greenLed = 1; msg = 0; newMsg = false; port.baud(BAUD_115200); port.attach(this, &Logger::rcv_isr, Serial::RxIrq); } /* Rutina de interrupción para recibir datos del servidor */ /* Funciona! */ void Logger::rcv_isr() { msg = UART0->D; // Leer UART0 para desactivar bandera de interrupción. while(UART0->S1 & UART_S1_RDRF_MASK); // Esperar a UART0 listo. newMsg = true; //redLed = !redLed; } /* Thread para adquisicion de datos de los sensores */ /* Funciona */ void Logger::data_thread(const void* args) { Logger* log = (Logger*)args; float temp[3]; //Buffer<float> buf_x(BUF_SIZE); Buffer<float> buf_y(BUF_SIZE); Buffer<float> buf_z(BUF_SIZE); while(true) { log->led_th.signal_set(LED_SIGNAL); log->acc.getAccAllAxis(temp); log->acc_x.put(temp[0]); //buf_x.put(temp[0]); buf_y.put(temp[1]); buf_z.put(temp[2]); //log->port.printf("a[x]: %f, a[y]: %f, a[z]: %f\n\r", temp[0], temp[1], temp[2]); log->port.printf("a[x}: %f\n\r", log->acc_x.get()); Thread::wait(SAMPLE_RATE); } } void Logger::led_thread(const void* args) { DigitalOut* led = (DigitalOut*)args; while(true) { Thread::signal_wait(LED_SIGNAL); *led = !(*led); } } /* Thread para el envio de datos al servidor */ //void Logger::tx_thread(const void* args) {} /* Destructor */ Logger::~Logger() { }