
Projet S5 Lecture de l'accelerometre avec interruption
Dependencies: mbed PowerControl
Fork of Projet_S5 by
Revision 3:17a4ceb30535, committed 2014-03-28
- Comitter:
- joGenie
- Date:
- Fri Mar 28 17:44:36 2014 +0000
- Parent:
- 2:d7784cc39c81
- Child:
- 4:f72c51a2108c
- Commit message:
- With analyzer; ;
Changed in this revision
--- a/accelerometer.cpp Thu Mar 27 19:25:59 2014 +0000 +++ b/accelerometer.cpp Fri Mar 28 17:44:36 2014 +0000 @@ -79,18 +79,18 @@ return values; } -extern void *Accelerometer_C_new() +extern "C" void *Accelerometer_C_new() { return new Accelerometer(); } -extern void Accelerometer_C_delete(void *accelerometer) +extern "C" void Accelerometer_C_delete(void *accelerometer) { Accelerometer *acc = (Accelerometer*)accelerometer; delete acc; } -extern unsigned short* Accelerometer_C_getAccelValue(void *accelerometer) +extern "C" unsigned short* Accelerometer_C_getAccelValue(void *accelerometer) { Accelerometer *acc = (Accelerometer*)accelerometer; return acc->getAccelValue();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/analyzer.cpp Fri Mar 28 17:44:36 2014 +0000 @@ -0,0 +1,31 @@ +#include "analyzer.h" + +Analyzer::Analyzer() +{} + +Analyzer::~Analyzer() +{} + +void Analyzer::setMinMax(unsigned short* values) +{ + x.setMinMax(values[0]); + y.setMinMax(values[1]); + z.setMinMax(values[2]); +} + +extern "C" void *Analyzer_C_new() +{ + return new Analyzer(); +} + +extern "C" void Analyzer_C_delete(void *analyzer) +{ + Analyzer *an = (Analyzer*)analyzer; + delete an; +} + +extern "C" void Analyzer_C_setMinMax(unsigned short* values, void *analyzer) +{ + Analyzer *an = (Analyzer*)analyzer; + an->setMinMax(values); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/analyzer.h Fri Mar 28 17:44:36 2014 +0000 @@ -0,0 +1,49 @@ +#ifndef ANALYZER_H +#define ANALIZER_H + +#include <mbed.h> +#include <climits> + +class Analyzer +{ +public: + Analyzer(); + ~Analyzer(); + + void setMinMax(unsigned short* values); + +private: + struct Data + { + unsigned short _min; + unsigned short _max; + + Data(): _min(USHRT_MAX), _max(0){} + + void setMinMax(unsigned short value) + { + if (value < _min) + _min = value; + + if (value > _max) + _max = value; + } + }; + + Data x, y, z; +}; + +// Define function in C for interruption +#ifdef __cplusplus +extern "C" { +#endif + +extern void *Analyzer_C_new(); +extern void Analyzer_C_delete(void *analyzer); +extern void Analyzer_C_setMinMax(unsigned short* values, void *analyzer); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file
--- a/main.cpp Thu Mar 27 19:25:59 2014 +0000 +++ b/main.cpp Fri Mar 28 17:44:36 2014 +0000 @@ -1,4 +1,5 @@ #include "accelerometer.h" +#include "analyzer.h" #include "interrupt.h" Serial pc(USBTX, USBRX); @@ -64,7 +65,6 @@ pc.printf("%d; ", values[i]); pc.printf("\n"); - LPC_TIM3->IR |= 0x01; // Reset timer } @@ -85,9 +85,7 @@ LPC_TIM2->PR = 0; // clear prescale register LPC_TIM2->TCR |= (1 << 1); // reset timer LPC_TIM2->TCR &= ~(1 << 1); // release reset - LPC_TIM2->MR0 = SystemCoreClock / 10000; - - //LPC_TIM2->MCR |= 0x03; // interrupt and reset control + LPC_TIM2->MR0 = SystemCoreClock / 100000; LPC_TIM2->IR |= 0xFF; // Clear interrupt flag LPC_TIM2->CCR |= 0x07; // enable cap2.0 rising-edge capture and falling-edge; interrupt on cap2.0 @@ -110,6 +108,8 @@ int main() { + + Analyzer analyzer; initialize(); while(true)