SD card functionality

Dependents:   ELEC350_Project2 SDcard

Committer:
Swabey89
Date:
Thu Nov 08 21:29:38 2018 +0000
Revision:
2:9a5eea2adbf8
Parent:
1:c3af0c26ded2
Child:
3:c6e5dd2faa22
Initialise moved into SDcard, requires improvement. ultimately sampling will be done on timer ISR with data put in queue

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Swabey89 0:0fc2cf27ff9e 1 #include "SDCard.hpp"
Swabey89 0:0fc2cf27ff9e 2
Swabey89 1:c3af0c26ded2 3 void SDcard(void)
Swabey89 0:0fc2cf27ff9e 4 {
Swabey89 1:c3af0c26ded2 5
Swabey89 2:9a5eea2adbf8 6
Swabey89 2:9a5eea2adbf8 7 //REQUIRES IMPROVEMENTS, SEE ONENOTE
Swabey89 0:0fc2cf27ff9e 8
Swabey89 2:9a5eea2adbf8 9 //Initialise the SD card
Swabey89 2:9a5eea2adbf8 10 if ( sd.init() != 0) {
Swabey89 2:9a5eea2adbf8 11 printf("Init failed \n");
Swabey89 2:9a5eea2adbf8 12 lcd.cls();
Swabey89 2:9a5eea2adbf8 13 lcd.printf("CANNOT INIT SD");
Swabey89 2:9a5eea2adbf8 14 errorCode(FATAL);
Swabey89 2:9a5eea2adbf8 15 }
Swabey89 2:9a5eea2adbf8 16
Swabey89 2:9a5eea2adbf8 17 //Create a filing system for SD Card
Swabey89 2:9a5eea2adbf8 18 FATFileSystem fs("sd", &sd);
Swabey89 2:9a5eea2adbf8 19
Swabey89 2:9a5eea2adbf8 20 //Open to WRITE
Swabey89 2:9a5eea2adbf8 21 FILE* fp = fopen("/sd/test.csv","a");
Swabey89 2:9a5eea2adbf8 22 if (fp == NULL) {
Swabey89 2:9a5eea2adbf8 23 error("Could not open file for write\n");
Swabey89 2:9a5eea2adbf8 24 lcd.cls();
Swabey89 2:9a5eea2adbf8 25 lcd.printf("CANNOT OPEN FILE\n\n");
Swabey89 2:9a5eea2adbf8 26 errorCode(FATAL);
Swabey89 2:9a5eea2adbf8 27 }
Swabey89 2:9a5eea2adbf8 28
Swabey89 2:9a5eea2adbf8 29 //Last message before sampling begins
Swabey89 2:9a5eea2adbf8 30 lcd.cls();
Swabey89 2:9a5eea2adbf8 31 lcd.printf("READY\n\n");
Swabey89 2:9a5eea2adbf8 32
Swabey89 2:9a5eea2adbf8 33 //move?
Swabey89 2:9a5eea2adbf8 34 //Press either switch to unmount
Swabey89 2:9a5eea2adbf8 35 while ((SW1 == 0) && (SW2 == 0)) {
Swabey89 2:9a5eea2adbf8 36
Swabey89 2:9a5eea2adbf8 37 //Base loop delay
Swabey89 2:9a5eea2adbf8 38 wait(1.0);
Swabey89 2:9a5eea2adbf8 39
Swabey89 2:9a5eea2adbf8 40 //Read environmental sensors
Swabey89 2:9a5eea2adbf8 41 double temp = sensor.getTemperature();
Swabey89 2:9a5eea2adbf8 42 double pressure = sensor.getPressure();
Swabey89 2:9a5eea2adbf8 43
Swabey89 2:9a5eea2adbf8 44 //Write new data to LCD (not fast!)
Swabey89 2:9a5eea2adbf8 45 lcd.cls();
Swabey89 2:9a5eea2adbf8 46 lcd.printf("Temp Pressure\n");
Swabey89 2:9a5eea2adbf8 47 lcd.printf("%6.1f ",temp);
Swabey89 2:9a5eea2adbf8 48 lcd.printf("%.2f\n",pressure);
Swabey89 2:9a5eea2adbf8 49
Swabey89 2:9a5eea2adbf8 50 //Write to SD (potentially slow)
Swabey89 2:9a5eea2adbf8 51 //fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure);
Swabey89 2:9a5eea2adbf8 52 }
Swabey89 2:9a5eea2adbf8 53
Swabey89 2:9a5eea2adbf8 54 //Close File
Swabey89 2:9a5eea2adbf8 55 fclose(fp);
Swabey89 2:9a5eea2adbf8 56
Swabey89 2:9a5eea2adbf8 57 //Close down
Swabey89 2:9a5eea2adbf8 58 sd.deinit();
Swabey89 2:9a5eea2adbf8 59 printf("Unmounted...\n");
Swabey89 2:9a5eea2adbf8 60 lcd.cls();
Swabey89 2:9a5eea2adbf8 61 lcd.printf("Unmounted...\n\n");
Swabey89 1:c3af0c26ded2 62 }
Swabey89 1:c3af0c26ded2 63
Swabey89 1:c3af0c26ded2 64 void SDread(int n)
Swabey89 1:c3af0c26ded2 65 {
Swabey89 2:9a5eea2adbf8 66 if (n == -1) puts("Received command to read all");
Swabey89 2:9a5eea2adbf8 67 else printf("Received command to read %d\n", n);
Swabey89 2:9a5eea2adbf8 68 }
Swabey89 2:9a5eea2adbf8 69
Swabey89 2:9a5eea2adbf8 70 void SDdelete(int n)
Swabey89 2:9a5eea2adbf8 71 {
Swabey89 2:9a5eea2adbf8 72 if (n == -1) puts("Received command to delete all");
Swabey89 2:9a5eea2adbf8 73 else printf("Received command to delete %d\n", n);
Swabey89 1:c3af0c26ded2 74 }
Swabey89 1:c3af0c26ded2 75
Swabey89 1:c3af0c26ded2 76 void SDalive(void)
Swabey89 1:c3af0c26ded2 77 {
Swabey89 2:9a5eea2adbf8 78 //puts("SD THREAD ALIVE\n");
Swabey89 0:0fc2cf27ff9e 79 }