Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
