Dependencies:   mbed

Revision:
0:4359b47b3d7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Aug 26 12:19:16 2011 +0000
@@ -0,0 +1,132 @@
+#include "mbed.h"
+#include "MSCFileSystem.h"
+
+#define FSNAME "msc"
+#define LOCAL "local"
+
+#define START 1
+#define STOP  0
+#define DEBOUNCING_INTERVAL 40   //  Debouncing interval (in mili-seconds)
+
+Serial pc(USBTX,USBRX);
+
+MSCFileSystem msc(FSNAME);
+LocalFileSystem local(LOCAL);
+
+DigitalOut led1(LED1);
+
+AnalogIn input(p16);
+InterruptIn bouton(p18);
+Timeout timeout;
+Timer t;
+Timer timerAcquisition;
+Timer tempsBoucle;
+
+struct TRAME
+    {
+        unsigned long int tempsA; /* 4 octets nb de tops de 250�s */
+        unsigned char topAv, topAr;
+        unsigned short guidon, refx, refy, refz, ax, ay, az, rx, ry, rz, gaz;
+        unsigned long int tempsB; /* 4 octets tempsA + 1 */
+    };
+        
+TRAME trame;
+int etatBouton = STOP;
+int compteurfclose = 0;
+int compteurfopen  = 0;
+int veriffclose = 1;
+int compteurBoucle= 0;
+DIR *d;
+FILE *fichier;
+
+void isr_interrupteurRisingStart(void) {
+    if ( t.read_ms() > DEBOUNCING_INTERVAL ) {  
+        etatBouton = START;
+        printf("Isr Rising\n\r");
+        compteurfopen  = 1; 
+        wait_ms(100);             
+    }
+    
+    t.reset();  //  timer reset
+}
+void isr_interrupteurFallingStop(void) {
+    if ( t.read_ms() > DEBOUNCING_INTERVAL ) {
+        etatBouton = STOP;
+        printf("Isr Falling\n\r");
+        compteurfclose = 1;  
+        wait_ms(100);                    
+    }
+    
+    t.reset();  //  timer reset
+}
+int main() {     
+    t.start();    
+    int acquisition = 0;
+    float temps;
+    char i;
+    
+    trame.refx = 0x7ff; /* 2047 */
+    trame.refy = 0x7ff;
+    trame.refz = 0x7ff;
+    trame.ax = 0x5555;
+    
+    unsigned short int buf[16];
+    for(i=0;i<16;i++){
+        buf[i] = 0;
+    }    
+    buf[4] = 0x7FF;
+    buf[5] = 0x7FF;
+    buf[6] = 0x7FF;
+    buf[7] = 0x5555; 
+    //d = opendir("/" FSNAME);
+    //fichier = fopen( "/" FSNAME "/Datatest.txt", "ab");  
+   
+    //d = opendir("/" LOCAL);
+    //fichier = fopen( "/" LOCAL "/Datatest.txt", "ab"); 
+       
+    bouton.rise(&isr_interrupteurRisingStart);
+    bouton.fall(&isr_interrupteurFallingStop);  
+
+    while (1){
+            
+        if(compteurfopen){
+            if(veriffclose){
+                do{ 
+                    printf("do\n\r");                 
+                    fichier = fopen( "/" FSNAME "/Data.IEF", "ab");
+                    timerAcquisition.start();
+                }while (fichier == NULL);                               
+                printf("Open file\n\rAcquisition : %d\n\r",acquisition);
+                veriffclose = 0;
+                compteurfopen  = 0;
+                acquisition++;
+            }else{
+                printf("Defaultclose file\n\r");
+                compteurfclose = 1;             
+            } 
+        } 
+        tempsBoucle.start();
+        while (etatBouton && !compteurfopen){     
+            buf[1]  = ((timerAcquisition.read_us()) & 0xFFFF0000)>>16;
+            buf[0]  = timerAcquisition.read_us();    
+            buf[15] = ((timerAcquisition.read_us()/2)& 0xFFFF0000)>>16;
+            buf[14] = timerAcquisition.read_us()/2;
+            buf[7]  = input.read_u16();                       
+            fwrite(buf,2,16,fichier);            
+            led1 = 1;
+            compteurBoucle++;
+        }
+        
+        if(compteurfclose){
+            temps = tempsBoucle.read();
+            printf("%d %f\n\r", compteurBoucle, temps);       
+            fclose(fichier);
+            timerAcquisition.reset();
+            led1 = 0;           
+            printf("Close file Compteur\n\r"); 
+            compteurfclose = 0;
+            veriffclose = 1;
+            compteurBoucle = 0;           
+        }
+    }
+}