kl25z accel dataloger

Dependencies:   MMA8451Q MMA8491Q PCF8583_rtc SDFileSystem mbed

Fork of SDFileSystem_HelloWorld by Neil Thiessen

Files at this revision

API Documentation at this revision

Comitter:
pedro_C
Date:
Wed Oct 19 10:29:47 2016 +0000
Parent:
25:444d09fee172
Commit message:
works

Changed in this revision

MMA8451Q.lib Show annotated file Show diff for this revision Revisions of this file
MMA8491Q.lib Show annotated file Show diff for this revision Revisions of this file
PCF8583_rtc.lib Show annotated file Show diff for this revision Revisions of this file
SDFileSystem.lib 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
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MMA8451Q.lib	Wed Oct 19 10:29:47 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/pedro_C/code/MMA8451Q/#204a460446d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MMA8491Q.lib	Wed Oct 19 10:29:47 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/jppang/code/MMA8491Q/#2d4b7fadb1e6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PCF8583_rtc.lib	Wed Oct 19 10:29:47 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/pedro_C/code/PCF8583_rtc/#c267167e379e
--- a/SDFileSystem.lib	Mon Aug 29 15:06:56 2016 +0000
+++ b/SDFileSystem.lib	Wed Oct 19 10:29:47 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/neilt6/code/SDFileSystem/#e4d2567200db
+https://developer.mbed.org/users/pedro_C/code/SDFileSystem/#9e655fe8121c
--- a/main.cpp	Mon Aug 29 15:06:56 2016 +0000
+++ b/main.cpp	Wed Oct 19 10:29:47 2016 +0000
@@ -1,129 +1,339 @@
+
 #include "mbed.h"
+//#include "TSISensor.h"
+#include "MMA8451Q.h"
+#include "MMA8491Q.h"
+//#include "MAG3110.h"
+//#include "MPL3115A2.h"
+#include <cstdlib>
+#include <iostream>
+
+#include <stdint.h>
 #include "SDFileSystem.h"
 
-Timer timer;
-DigitalIn button(p21, PullUp);
-SDFileSystem sd(p5, p6, p7, p20, "sd", p22, SDFileSystem::SWITCH_NEG_NO, 25000000);
-char buffer[4096];
+
+#include "PCF8583_rtc.h"
+
+I2C i2c(PTE0, PTE1);       // sda, scl
+PCF8583rtc rtc(&i2c, PCF8583_addr_2);
+SDFileSystem sd(PTD2, PTD3, PTD1, PTD5, "sd"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name
+/*                  DI , DO ,SCK , CS
+MicroSD Breakout    mbed
+   CS  o-------------o PTA13    (DigitalOut cs)
+   DI  o-------------o PTD2    (SPI mosi)
+   VCC o-------------o VOUT
+   SCK o-------------o PTD1    (SPI sclk)
+   GND o-------------o GND
+   DO  o-------------o PTD3    (SPI miso)
+   CD  o
+   */
+
+
+Serial se(PTE22, PTE23);
+Serial pc(USBTX,USBRX);
+
+MMA8451Q acc51(PTE25, PTE24, 0x1D<<1);
+MMA8491Q acc91(PTE0, PTE1, 0x55<<1);
+//MAG3110 mag(PTE0, PTE1, 0x0E<<1);
+//MPL3115A2 mpl(PTE0, PTE1, 0x60<<1);
+
+Timer t;
+//PwmOut rled(LED_RED);
 
-void writeTest()
+//DigitalOut rled(LED_RED); partilhado com sck não usar
+//DigitalOut bled(LED_BLUE);
+//DigitalOut gled(LED_GREEN);
+
+//PwmOut gled(LED_GREEN);
+//PwmOut bled(LED_BLUE);
+
+DigitalOut enMMA8491(PTC7);
+
+DigitalOut memok (PTB0); // azul ok
+DigitalOut membad (PTB2); // vermelho
+DigitalOut ejeok (PTB1); //verde
+
+DigitalIn detect (PTD4);
+
+InterruptIn eject (PTD7); //ejectar cartão
+
+InterruptIn intMPL3115(PTA4);
+InterruptIn intMAG3110(PTA5);
+
+DigitalIn acc91X(PTC4);
+DigitalIn acc91Y(PTC3);
+DigitalIn acc91Z(PTC0);
+DigitalIn lock(PTB3);
+
+int flagject = 0;//flag eject
+
+char X_buffer [5];
+
+int set = 0;
+
+int readSerialString ()
 {
-    //Test write performance by creating a 1MB file
-    printf("Testing %iB write performance...", sizeof(buffer));
-    FileHandle* file = sd.open("Test File.bin", O_WRONLY | O_CREAT | O_TRUNC);
-    if (file != NULL) {
-        timer.start();
-        for (int i = 0; i < (1048576 / sizeof(buffer)); i++) {
-            if (file->write(buffer, sizeof(buffer)) != sizeof(buffer)) {
-                timer.stop();
-                printf("write error!\n");
-                timer.reset();
-                return;
-            }
-        }
-        timer.stop();
-        if (file->close())
-            printf("failed to close file!\n");
-        else
-            printf("done!\n\tResult: %.2fKB/s\n", 1024 / (timer.read_us() / 1000000.0));
-        timer.reset();
-    } else {
-        printf("failed to create file!\n");
+
+    int x = 0;
+    int aux=0;
+    for(aux=0; aux<5; aux++) {
+        X_buffer[aux]=0;
     }
+    /*j=0;
+    while(j<5) {
+        X_buffer[j] = pc.getc();
+        j++;
+    }*/
+    se.scanf("%s",&X_buffer[0]);
+    x=atoi(X_buffer);
+    return x;
 }
 
-void readTest()
+
+void clockset()
 {
-    //Test read performance by reading the 1MB file created by writeTest()
-    printf("Testing %iB read performance...", sizeof(buffer));
-    FileHandle* file = sd.open("Test File.bin", O_RDONLY);
-    if (file != NULL) {
-        timer.start();
-        int iterations = 0;
-        while (file->read(buffer, sizeof(buffer)) == sizeof(buffer))
-            iterations++;
-        timer.stop();
-        if (iterations != (1048576 / sizeof(buffer)))
-            printf("read error!\n");
-        else if (file->close())
-            printf("failed to close file!\n");
-        else if (sd.remove("Test File.bin"))
-            printf("failed to delete file!\n");
-        else
-            printf("done!\n\tResult: %.2fKB/s\n", 1024 / (timer.read_us() / 1000000.0));
-        timer.reset();
-    } else {
-        printf("failed to open file!\n");
-    }
+    /* wait (5);
+     se.printf("clockset \n");*/
+    int   hours=0;
+    int   mins=0;
+
+    int   sec=0;
+    int   csec=0;
+
+    int day=0;
+    int month=0;
+    int year=0;
+
+    struct DateTime_t dt;
+    //NVIC_DisableIRQ(UART2_IRQn);
+    wait_ms (200);
+    rtc.pauseCounting();
+
+    se.printf("\nH?");
+    hours=readSerialString ();
+    dt.time.hours = rtc.bin2bcd(hours);
+
+    se.printf("\nM?");
+    mins=readSerialString ();
+    dt.time.minutes= rtc.bin2bcd(mins);
+
+    se.printf("\nS?");
+    sec=readSerialString ();
+    dt.time.seconds = rtc.bin2bcd(sec);
+
+    se.printf("\nCS?");
+    csec=readSerialString ();
+    dt.time.hundreds = rtc.bin2bcd(csec);
+
+    se.printf("\nDia?");
+    day=readSerialString ();
+    dt.date.day = rtc.bin2bcd(day);
+
+    se.printf("\nMes?");
+    month=readSerialString ();
+    dt.date.month = rtc.bin2bcd(month);
+
+    se.printf("\nAno?");
+    year=readSerialString ();
+    dt.date.year=rtc.bin2bcd(year);
+
+    rtc.write(TIME, dt);
+
+    // rtc.enableCounting();
+    wait_ms(10);
+    //NVIC_EnableIRQ(UART2_IRQn);
+    se.printf("done");
+    se.printf("\n");
+    set=1;
 }
 
+void flip ()
+
+{
+    flagject =1;
+}
+
+
+
+
 int main()
+
 {
-    //Configure CRC, large frames, and write validation
-    sd.crc(true);
-    sd.large_frames(true);
-    sd.write_validation(true);
+    se.baud(9600);
+    pc.baud(115200);
+
+  
+    memok=1;
+    membad=1;
+    ejeok = 1;
+
+
+    struct DateTime_t dt;
+    
+    if(lock==0&&set==0) {
+        membad=0;
+        wait (10);
+        se.printf("clockset \n");
+        clockset();
+        membad=1;
+    }
+
+    using namespace std;
+    //  mkdir("/sd/xxdir", 0777);
+
+    int hours=0;
+    int mins=0;
 
-    //Fill the buffer with random data for the write test
-    srand(time(NULL));
-    for (int i = 0; i < sizeof(buffer); i++)
-        buffer[i] = rand();
+    int sec=0;
+    int csec=0;
+    int day=0;
+    int month=0;
+    int year=0;
+
+    char name[40];
+
+    //  char acele[110];
+
+    float flag=0;
+
+
+//   float onTime = 1.0;
+//   float offTime = 0.0;
+    float holdTime = 1;
+    bool on = true;
+    bool off = false;
+    int magX = 0, magY = 0, magZ = 0;
+    float mplAlt = .0, mplPres = .0, mplTemp = .0;
+   // mpl.Altimeter_Mode();
+
+    /*
+        dt.time.hours = rtc.bin2bcd(23);
+        dt.time.minutes = rtc.bin2bcd(59);
+        dt.time.seconds = rtc.bin2bcd(50);
+        dt.time.hundreds = rtc.bin2bcd(0);
+
+        dt.date.day = rtc.bin2bcd(30);
+        dt.date.month = rtc.bin2bcd(6);
+        //   dt.date.year = rtc.bin2bcd(15);
 
-    while(1) {
-        //Simple button debouncing
-        wait(0.5);
+        //dt.date.year = rtc.bin2bcd(15);
+        dt.date.year=rtc.bin2bcd(89);
+        //   dt.date.century= 99;
+        rtc.write(TIME, dt);
+    */
+
+
+    eject.fall(&flip);
+    while(true) {
+        dt = rtc.read(TIME);
 
-        //Print the start message
-        printf("\nPress the button to perform tests: ");
+        hours= (((dt.time.hours & 0xF0) >> 4) * 10) + (dt.time.hours & 0x0F);
+        mins= (((dt.time.minutes & 0xF0) >> 4) * 10) + (dt.time.minutes & 0x0F);
+        sec= (((dt.time.seconds & 0xF0) >> 4) * 10) + (dt.time.seconds & 0x0F);
+        csec= (((dt.time.hundreds & 0xF0) >> 4) * 10) + (dt.time.hundreds & 0x0F);
+
+        day= (((dt.date.day & 0xF0) >> 4) * 10) + (dt.date.day & 0x0F);
+        month= (((dt.date.month & 0xF0) >> 4) * 10) + (dt.date.month & 0x0F);
+        year= (((dt.date.year & 0xF0) >> 4) * 10) + (dt.date.year & 0x0F);
+
+
+        //   century= (((dt.date.century & 0xF0) >> 4) * 10) + (dt.date.century & 0x0F);
+        // century= dt.date.century;
+
 
-        //Wait for the button to be pressed
-        while(button);
+        //  const char *filename = ("/sd/%d:%d:%d:%d:%d:%d.txt",hours,mins,sec,csec,day,month,year+100+1900);
+        sprintf(name ,"/sd/%d-%d-%d-%d-%d-%d-%d.txt",hours,mins,sec,csec,day,month,year+100+1900);
+        FILE *fp = fopen(name, "w");
+        if(fp == NULL) {
+            error("Could not open file for write\n");
+            //  gled = 1;
+            membad=0;
+
+        }
+        memok=0;
+       // mplTemp = mpl.getTemperature();
+        //   t.start();
+
+        // while(flag<360000&& flagject!=1) {
+        while(flag<360000) {
+            //wait_ms(2.5);
+            //if(t.read_ms ()==2.5) {
+            enMMA8491 = on;
 
-        //Make sure a card is present
-        if (!sd.card_present()) {
-            printf("\nNo card present!\n");
-            continue;
+            //    sprintf(acele,"MMA8451: x:%f \ty: %f \tz:%f\t     MMA8491: x:%f \ty: %f \tz:%f \n",acc51.getAccX(),acc51.getAccY(),acc51.getAccZ(),acc91.getAccX(),acc91.getAccY(),acc91.getAccZ());
+            fprintf(fp,"MMA8451: x:%f \ty: %f \tz:%f\t      ",acc51.getAccX(),acc51.getAccY(),acc51.getAccZ());
+            fprintf(fp,"MMA8491: x:%f \ty: %f \tz:%f \n",acc91.getAccX(),acc91.getAccY(),acc91.getAccZ());
+
+            //    fprintf(fp,acele);
+
+            if(flagject ==1) {
+               // mplTemp = mpl.getTemperature();
+                //fprintf(fp,"Temp:%f \n",mplTemp);
+                fclose(fp);
+                memok=1;
+                ejeok = 0;
+                while(1);
+            }
+            // t.reset();
+            flag++;
+            enMMA8491 = off;
+            // }
         }
 
-        //Try to mount the SD card
-        printf("\nMounting SD card...");
-        if (sd.mount() != 0) {
-            printf("failed!\n");
-            continue;
-        }
-        printf("success!\n");
+
+        //  t.stop();
+        //  t.reset();
+       // fprintf(fp,"Temp:%f \n",mplTemp);
+        /*
+            if (flagject ==1) {
+                fclose(fp);
+                memok=1;
+                ejeok = 0;
+                while(1);
+            }*/
+
+
+
+        // fprintf(fp, "Hello fun SD Card World!");
+        fclose(fp);
+        flag=0;
+        /* printf("%s\n",name);
+         se.printf("%d:%d:%d:%d\n",hours,mins,sec,csec);
+         printf("%d/%d////%d\n",day,month,year+100+1900);
+         //  printf("%d/%d////%d\n",day,month,century);
+
+
+         //enMMA8491 = off;
+
+        //       mpl.Altimeter_Mode();
+
+         enMMA8491 = on;
 
-        //Display the card type
-        printf("\tCard type: ");
-        SDFileSystem::CardType cardType = sd.card_type();
-        if (cardType == SDFileSystem::CARD_NONE)
-            printf("None\n");
-        else if (cardType == SDFileSystem::CARD_MMC)
-            printf("MMC\n");
-        else if (cardType == SDFileSystem::CARD_SD)
-            printf("SD\n");
-        else if (cardType == SDFileSystem::CARD_SDHC)
-            printf("SDHC\n");
-        else
-            printf("Unknown\n");
+
+         mag.getValues(&magX, &magY, &magZ);
+         mplAlt = mpl.getAltimeter();
+         mplTemp = mpl.getTemperature();
+
+         cout << "MMA8451: x:" << acc51.getAccX() << "\ty:" << acc51.getAccY() << "\tz:" << acc51.getAccZ() << "\n\r" << endl;
+         se.printf("MMA8451: x:%f \ty: %f \tz:%f \n",acc51.getAccX(),acc51.getAccY(),acc51.getAccZ());
+         cout << "MMA8491: " << acc91X << "\t" << acc91Y << "\t" << acc91Z << "\n\r" << endl;
+         cout << "MMA8491: x:" << acc91.getAccX() << "\ty:" << acc91.getAccY() << "\tz:" << acc91.getAccZ() << "\n\r" << endl;
+         cout << "MAG3110: " << magX << "\t" << magY << "\t" << magZ << "\n\r" << endl;
+         mpl.Barometric_Mode();
+         wait(holdTime);
 
-        //Display the card capacity
-        printf("\tSectors: %u\n", sd.disk_sectors());
-        printf("\tCapacity: %.1fMB\n", sd.disk_sectors() / 2048.0);
+         enMMA8491 = off;
+
+
+
+         mplPres = mpl.getPressure();
 
-        /*//Format the card
-        printf("Formatting SD card...");
-        if (sd.format() != 0) {
-            printf("failed!\n");
-            continue;
-        }
-        printf("success!\n");*/
+         //cout << "Touch: " << tsi.readPercentage() << "\n\r" << endl;
+         cout << "MPL3115: " << mplAlt << "\t" << mplPres << "\t" << mplTemp << "\n\r" << endl;
+         mpl.Altimeter_Mode();
+         wait(holdTime);*/
 
-        //Perform a read/write test
-        writeTest();
-        readTest();
 
-        //Unmount the SD card
-        sd.unmount();
     }
+    return 0;
 }
--- a/mbed.bld	Mon Aug 29 15:06:56 2016 +0000
+++ b/mbed.bld	Wed Oct 19 10:29:47 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/2241e3a39974
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/25aea2a3f4e3
\ No newline at end of file