Projet S5 Lecture de l'accelerometre avec interruption

Dependencies:   mbed PowerControl

Fork of Projet_S5 by Jonathan Tousignant

Revision:
12:16390cea4420
Parent:
11:9c0786fc06b4
Child:
13:d25fe10677e8
--- a/main.cpp	Tue Apr 08 13:46:22 2014 +0000
+++ b/main.cpp	Thu Apr 10 18:39:16 2014 +0000
@@ -1,6 +1,8 @@
 #include "accelerometer.h"
 #include "analyzer.h"
 #include "interrupt.h"
+#include <iostream>
+#include <fstream>
 
 Serial pc(USBTX, USBRX);
 DigitalOut led1(LED1);
@@ -8,8 +10,11 @@
 DigitalOut led4(LED4);
 DigitalIn button(p30);
 
+LocalFileSystem local("local");
+
 void *accelerometer = Accelerometer_C_new();
 void *analyzer = Analyzer_C_new();
+
 bool rebound = true;
 bool appuyer = false;
 
@@ -30,14 +35,14 @@
         LPC_TIM2->MCR = 0;
         LPC_TIM2->CCR = (0x06 << 0);  //falling edge
         
-        LPC_TIM3->TC = 0;       // clear timer counter
-        LPC_TIM3->PC = 0;       // clear prescale counter
-        LPC_TIM3->PR = 0;       // clear prescale register
-        LPC_TIM3->IR |= 0xFF;
-        LPC_TIM3->TCR = 0x01;   //enable timer 3
+        LPC_TIM1->TC = 0;       // clear timer counter
+        LPC_TIM1->PC = 0;       // clear prescale counter
+        LPC_TIM1->PR = 0;       // clear prescale register
+        LPC_TIM1->IR |= 0xFF;
+        LPC_TIM1->TCR = 0x01;   //enable timer 3
     
         appuyer = true;
-        NVIC_EnableIRQ(TIMER3_IRQn); // Enable timer3 interrupt
+        NVIC_EnableIRQ(TIMER1_IRQn); // Enable TIMER1 interrupt
         
         signed char* values = Accelerometer_C_getAccelValue(accelerometer);
         
@@ -49,15 +54,15 @@
         led1 = 0;
         LPC_TIM2->CCR = (5 << 0);  //rising edge
         
-        LPC_TIM3->TC = 0;       // clear timer counter
-        LPC_TIM3->PC = 0;       // clear prescale counter
-        LPC_TIM3->PR = 0;       // clear prescale register
-        LPC_TIM3->IR |= 0xFF;
-        LPC_TIM3->TCR = 0;      //disable timer 3
+        LPC_TIM1->TC = 0;       // clear timer counter
+        LPC_TIM1->PC = 0;       // clear prescale counter
+        LPC_TIM1->PR = 0;       // clear prescale register
+        LPC_TIM1->IR |= 0xFF;
+        LPC_TIM1->TCR = 0;      //disable timer 3
         
         appuyer = false;
         rebound = true;
-        NVIC_DisableIRQ(TIMER3_IRQn); // Disable timer3 interrupt
+        NVIC_DisableIRQ(TIMER1_IRQn); // Disable TIMER1 interrupt
         
         Analyzer_C_checkMouvement(analyzer);
     }
@@ -83,7 +88,7 @@
         delete values;
     }
     
-    LPC_TIM3->IR |= 0xFF; // Reset timer  
+    LPC_TIM1->IR |= 0xFF; // Reset timer  
 }
 
 void initialize()
@@ -111,29 +116,55 @@
     NVIC_SetVector(TIMER2_IRQn, uint32_t(interruptCapture));
     
     //  TIMER 3
-    LPC_SC->PCONP |= 1 << 23;           // Timer3 power on
+    //LPC_SC->PCONP |= 1 << 23;           // TIMER3 power on
         
-    LPC_TIM3->MCR = 3;                  // Interrupt and reset control
-    LPC_TIM3->TC = 0;                   // clear timer counter
-    LPC_TIM3->PC = 0;                   // clear prescale counter
-    LPC_TIM3->PR = 0;                   // clear prescale register
-    LPC_TIM3->MR0 = SystemCoreClock / 20;
+    LPC_TIM1->MCR = 3;                  // Interrupt and reset control
+    LPC_TIM1->TC = 0;                   // clear timer counter
+    LPC_TIM1->PC = 0;                   // clear prescale counter
+    LPC_TIM1->PR = 0;                   // clear prescale register
+    LPC_TIM1->MR0 = SystemCoreClock / 100;
         
-    LPC_TIM3->IR |= 0xFF;               // Clear MR0 interrupt flag
-    LPC_TIM3->TCR = (1 << 1);           // Reset Timer3
-    LPC_TIM3->TCR = 0;                  // Disable timer
+    LPC_TIM1->IR |= 0xFF;               // Clear MR0 interrupt flag
+    LPC_TIM1->TCR = (1 << 1);           // Reset TIMER1
+    LPC_TIM1->TCR = 0;                  // Disable timer
     
-    //NVIC_EnableIRQ(TIMER3_IRQn);      // Enable timer3 interrupt
-    NVIC_SetVector(TIMER3_IRQn, uint32_t(interruptMatch));
+    //NVIC_EnableIRQ(TIMER1_IRQn);      // Enable TIMER1 interrupt
+    NVIC_SetVector(TIMER1_IRQn, uint32_t(interruptMatch));
 }
 
 int main()
 {
-    initialize();
+    string line;
+    string filename = "/local/config.txt";
     
-    pc.printf("\n\rReady");
+    ifstream myfile(filename.c_str());
     
-    while(true)
+    if (myfile.is_open())
     {
+        while (getline(myfile,line))
+        {
+            if (line[0] != '#')
+            {
+                // Find hand
+                if (line.find("Hand") != string::npos)
+                {
+                    if (line.compare(5,6,"L") == 0)
+                        Analyzer_C_setHand(true, analyzer);
+                    else
+                        Analyzer_C_setHand(false, analyzer);
+                }
+            }
+        }
+        
+        myfile.close();
+        
+        initialize();
+        pc.printf("\n\rReady");
+        
+        while(true)
+        {
+        }
     }
+    
+    return 0;
 }