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.
SDcardM.cpp
00001 #include "SDcardM.h" 00002 #include "SDBlockDevice.h" 00003 #include "mbed.h" 00004 00005 extern SDBlockDevice sd; 00006 extern Serial pc; 00007 00008 char writeBuffer[520]; 00009 char readBuffer[512]; 00010 int i; 00011 bd_addr_t block; 00012 bd_addr_t* bp=(bd_addr_t*) readBuffer; 00013 00014 bool SD_init() 00015 { 00016 for (int j=0; j<520; j++) writeBuffer[j]=0; 00017 i = 0; 00018 sd.deinit(); 00019 if(sd.init()) { 00020 return false; 00021 } 00022 sd.frequency(24000000); 00023 sd.read(readBuffer, 0, 512); 00024 block=*bp; 00025 pc.printf("CURRENT BLOCK: %d\r\n", block); 00026 return true; 00027 } 00028 00029 void SD_log_char(char c) 00030 { 00031 writeBuffer[i]=c; 00032 i++; 00033 if(i==512) { 00034 sd.program(writeBuffer, block, 512); 00035 block+=512;; 00036 *bp=block; 00037 sd.program(readBuffer, 0, 512); 00038 i=0; 00039 } 00040 } 00041 00042 void SD_log_string(const char* s) 00043 { 00044 while(*s) { 00045 SD_log_char(*s); 00046 s++; 00047 } 00048 } 00049 00050 void SD_log_float(float f) 00051 { 00052 memcpy(writeBuffer+i, (char*) (&f), 4); 00053 i+=4; 00054 if(i>=512) { 00055 sd.program(writeBuffer, block, 512); 00056 block+=512; 00057 sd.program(readBuffer, 0, 512); 00058 00059 for(int j=0; j+512<i; j++) { 00060 writeBuffer[j]=writeBuffer[j+512]; 00061 } 00062 i-=512; 00063 } 00064 } 00065 00066 void SD_log_int(int f) 00067 { 00068 memcpy(writeBuffer+i, (char*) (&f), 4); 00069 i+=4; 00070 if(i>=512) { 00071 sd.program(writeBuffer, block, 512); 00072 block+=512; 00073 sd.program(readBuffer, 0, 512); 00074 00075 for(int j=0; j+512<i; j++) { 00076 writeBuffer[j]=writeBuffer[j+512]; 00077 } 00078 i-=512; 00079 } 00080 } 00081 00082 00083 void SD_flush() 00084 { 00085 sd.program(writeBuffer, block, 512); 00086 block+=512; 00087 *bp=block; 00088 sd.program(readBuffer, 0, 512); 00089 i=0; 00090 }
Generated on Fri Jul 15 2022 20:20:12 by
