![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
simple data logger
Dependencies: Buffer MMA8451Q mbed-rtos mbed
Revision 0:93d648fde6cf, committed 2013-06-04
- Comitter:
- jhestolano
- Date:
- Tue Jun 04 01:42:20 2013 +0000
- Commit message:
- Simple data logger.
Changed in this revision
diff -r 000000000000 -r 93d648fde6cf Buffer.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Buffer.lib Tue Jun 04 01:42:20 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/jhestolano/code/Buffer/#f45f33d1febb
diff -r 000000000000 -r 93d648fde6cf MMA8451Q.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Tue Jun 04 01:42:20 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/JoKer/code/MMA8451Q/#2d14600116fc
diff -r 000000000000 -r 93d648fde6cf logger.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logger.cpp Tue Jun 04 01:42:20 2013 +0000 @@ -0,0 +1,71 @@ +#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() +{ + +} \ No newline at end of file
diff -r 000000000000 -r 93d648fde6cf logger.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logger.h Tue Jun 04 01:42:20 2013 +0000 @@ -0,0 +1,51 @@ +#ifndef LOGGER_H +#define LOGGER_H + +#include "mbed.h" +#include "rtos.h" +#include "MMA8451Q.h" +#include "buffer.h" + +const int BAUD_115200 = 115200; +const int BUF_SIZE = 128; +const int MMA8451Q_I2C_ADDRESS = (0x1D << 1); + +const int SEND_DATA_SIGNAL = 0x01; +const int GET_DATA_SIGNAL = 0x02; +const int LED_SIGNAL = 0x03; + +const int SAMPLE_RATE = 1000; //Milisegundos. +const int TRANSMIT_RATE = 60000; //Milisegundos. + +class Logger +{ +private: + Serial port; + DigitalOut redLed; + DigitalOut blueLed; + DigitalOut greenLed; + MMA8451Q acc; + //Thread tx_th; + Thread data_th; + Thread led_th; + int msg; + bool newMsg; + Buffer<float> acc_x; + + static void led_thread(void const* args); + static void data_thread(void const* args); + void rcv_isr(); + + +public: + Logger(PinName tx, PinName rx); + float* getData(); + //static void tx_thread(void const* args); + + + ~Logger(); +}; + + + +#endif //LOGGER_H \ No newline at end of file
diff -r 000000000000 -r 93d648fde6cf main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jun 04 01:42:20 2013 +0000 @@ -0,0 +1,7 @@ +#include "logger.h" + +int main() +{ + Logger myLog(USBTX, USBRX); + while(true); +}
diff -r 000000000000 -r 93d648fde6cf mbed-rtos.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Tue Jun 04 01:42:20 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#58b30ac3f00e
diff -r 000000000000 -r 93d648fde6cf mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jun 04 01:42:20 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/b3110cd2dd17 \ No newline at end of file