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.
Diff: SDcardM.cpp
- Revision:
- 0:ce17b48156eb
- Child:
- 1:f4a3e6cca74e
diff -r 000000000000 -r ce17b48156eb SDcardM.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SDcardM.cpp Wed Jun 12 21:49:37 2019 +0000
@@ -0,0 +1,93 @@
+#include "SDcardM.h"
+#include "SDBlockDevice.h"
+#include "mbed.h"
+
+extern SDBlockDevice sd;
+extern Serial pc;
+
+char writeBuffer[520];
+char readBuffer[512];
+int i;
+bd_addr_t block;
+bd_addr_t* bp=(bd_addr_t*) readBuffer;
+
+bool SD_init()
+{
+ for (int j=0; j<520; j++) writeBuffer[j]=0;
+ i = 0;
+ if(sd.init()) {
+ return false;
+ }
+ sd.frequency(24000000);
+ sd.read(readBuffer, 0, 512);
+ block=*bp;
+ pc.printf("CURRENT BLOCK: %d\r\n", block);
+ return true;
+}
+
+void SD_log_char(char c)
+{
+ writeBuffer[i]=c;
+ i++;
+ if(i==512) {
+ sd.program(writeBuffer, block, 512);
+ block+=512;;
+ *bp=block;
+ sd.program(readBuffer, 0, 512);
+ i=0;
+ }
+}
+
+void SD_log_string(const char* s)
+{
+ while(*s) {
+ SD_log_char(*s);
+ s++;
+ }
+}
+
+void SD_log_float(float f)
+{
+ pc.printf("INDEX: %d\r\n", i);
+ memcpy(writeBuffer+i, (char*) (&f), 4);
+ pc.printf("INDEX: %d\r\n", i);
+ i+=4;
+ if(i>=512) {
+ sd.program(writeBuffer, block, 512);
+ block+=512;
+ sd.program(readBuffer, 0, 512);
+
+ for(int j=0; j+512<i; j++) {
+ writeBuffer[j]=writeBuffer[j+512];
+ }
+ i-=512;
+ }
+ pc.printf("INDEX: %d\r\n", i);
+}
+
+void SD_log_int(int f)
+{
+ memcpy(writeBuffer+i, (char*) (&f), 4);
+ i+=4;
+ if(i>=512) {
+ sd.program(writeBuffer, block, 512);
+ block+=512;
+ sd.program(readBuffer, 0, 512);
+
+ for(int j=0; j+512<i; j++) {
+ writeBuffer[j]=writeBuffer[j+512];
+ }
+ i-=512;
+ }
+ pc.printf("INDEX: %d\r\n", i);
+}
+
+
+void SD_flush()
+{
+ sd.program(writeBuffer, block, 512);
+ block+=512;
+ *bp=block;
+ sd.program(readBuffer, 0, 512);
+ i=0;
+}
\ No newline at end of file