Projet S5 Lecture de l'accelerometre avec interruption

Dependencies:   mbed PowerControl

Fork of Projet_S5 by Jonathan Tousignant

Files at this revision

API Documentation at this revision

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

accelerometer.cpp Show annotated file Show diff for this revision Revisions of this file
analyzer.cpp Show annotated file Show diff for this revision Revisions of this file
analyzer.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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)