kl25z accel dataloger
Dependencies: MMA8451Q MMA8491Q PCF8583_rtc SDFileSystem mbed
Fork of SDFileSystem_HelloWorld by
Revision 26:7c2df5486af7, committed 2016-10-19
- Comitter:
- pedro_C
- Date:
- Wed Oct 19 10:29:47 2016 +0000
- Parent:
- 25:444d09fee172
- Commit message:
- works
Changed in this revision
--- /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