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@1:f4a3e6cca74e, 2019-06-27 (annotated)
- Committer:
- milenicnikola
- Date:
- Thu Jun 27 17:12:06 2019 +0000
- Revision:
- 1:f4a3e6cca74e
- Parent:
- 0:ce17b48156eb
par manjih poboljsanja
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| milenicnikola | 0:ce17b48156eb | 1 | #include "SDcardM.h" | 
| milenicnikola | 0:ce17b48156eb | 2 | #include "SDBlockDevice.h" | 
| milenicnikola | 0:ce17b48156eb | 3 | #include "mbed.h" | 
| milenicnikola | 0:ce17b48156eb | 4 | |
| milenicnikola | 0:ce17b48156eb | 5 | extern SDBlockDevice sd; | 
| milenicnikola | 0:ce17b48156eb | 6 | extern Serial pc; | 
| milenicnikola | 0:ce17b48156eb | 7 | |
| milenicnikola | 0:ce17b48156eb | 8 | char writeBuffer[520]; | 
| milenicnikola | 0:ce17b48156eb | 9 | char readBuffer[512]; | 
| milenicnikola | 0:ce17b48156eb | 10 | int i; | 
| milenicnikola | 0:ce17b48156eb | 11 | bd_addr_t block; | 
| milenicnikola | 0:ce17b48156eb | 12 | bd_addr_t* bp=(bd_addr_t*) readBuffer; | 
| milenicnikola | 0:ce17b48156eb | 13 | |
| milenicnikola | 0:ce17b48156eb | 14 | bool SD_init() | 
| milenicnikola | 0:ce17b48156eb | 15 | { | 
| milenicnikola | 0:ce17b48156eb | 16 | for (int j=0; j<520; j++) writeBuffer[j]=0; | 
| milenicnikola | 0:ce17b48156eb | 17 | i = 0; | 
| milenicnikola | 1:f4a3e6cca74e | 18 | sd.deinit(); | 
| milenicnikola | 0:ce17b48156eb | 19 | if(sd.init()) { | 
| milenicnikola | 0:ce17b48156eb | 20 | return false; | 
| milenicnikola | 0:ce17b48156eb | 21 | } | 
| milenicnikola | 0:ce17b48156eb | 22 | sd.frequency(24000000); | 
| milenicnikola | 0:ce17b48156eb | 23 | sd.read(readBuffer, 0, 512); | 
| milenicnikola | 0:ce17b48156eb | 24 | block=*bp; | 
| milenicnikola | 0:ce17b48156eb | 25 | pc.printf("CURRENT BLOCK: %d\r\n", block); | 
| milenicnikola | 0:ce17b48156eb | 26 | return true; | 
| milenicnikola | 0:ce17b48156eb | 27 | } | 
| milenicnikola | 0:ce17b48156eb | 28 | |
| milenicnikola | 0:ce17b48156eb | 29 | void SD_log_char(char c) | 
| milenicnikola | 0:ce17b48156eb | 30 | { | 
| milenicnikola | 0:ce17b48156eb | 31 | writeBuffer[i]=c; | 
| milenicnikola | 0:ce17b48156eb | 32 | i++; | 
| milenicnikola | 0:ce17b48156eb | 33 | if(i==512) { | 
| milenicnikola | 0:ce17b48156eb | 34 | sd.program(writeBuffer, block, 512); | 
| milenicnikola | 0:ce17b48156eb | 35 | block+=512;; | 
| milenicnikola | 0:ce17b48156eb | 36 | *bp=block; | 
| milenicnikola | 0:ce17b48156eb | 37 | sd.program(readBuffer, 0, 512); | 
| milenicnikola | 0:ce17b48156eb | 38 | i=0; | 
| milenicnikola | 0:ce17b48156eb | 39 | } | 
| milenicnikola | 0:ce17b48156eb | 40 | } | 
| milenicnikola | 0:ce17b48156eb | 41 | |
| milenicnikola | 0:ce17b48156eb | 42 | void SD_log_string(const char* s) | 
| milenicnikola | 0:ce17b48156eb | 43 | { | 
| milenicnikola | 0:ce17b48156eb | 44 | while(*s) { | 
| milenicnikola | 0:ce17b48156eb | 45 | SD_log_char(*s); | 
| milenicnikola | 0:ce17b48156eb | 46 | s++; | 
| milenicnikola | 0:ce17b48156eb | 47 | } | 
| milenicnikola | 0:ce17b48156eb | 48 | } | 
| milenicnikola | 0:ce17b48156eb | 49 | |
| milenicnikola | 0:ce17b48156eb | 50 | void SD_log_float(float f) | 
| milenicnikola | 0:ce17b48156eb | 51 | { | 
| milenicnikola | 0:ce17b48156eb | 52 | memcpy(writeBuffer+i, (char*) (&f), 4); | 
| milenicnikola | 0:ce17b48156eb | 53 | i+=4; | 
| milenicnikola | 0:ce17b48156eb | 54 | if(i>=512) { | 
| milenicnikola | 0:ce17b48156eb | 55 | sd.program(writeBuffer, block, 512); | 
| milenicnikola | 0:ce17b48156eb | 56 | block+=512; | 
| milenicnikola | 0:ce17b48156eb | 57 | sd.program(readBuffer, 0, 512); | 
| milenicnikola | 0:ce17b48156eb | 58 | |
| milenicnikola | 0:ce17b48156eb | 59 | for(int j=0; j+512<i; j++) { | 
| milenicnikola | 0:ce17b48156eb | 60 | writeBuffer[j]=writeBuffer[j+512]; | 
| milenicnikola | 0:ce17b48156eb | 61 | } | 
| milenicnikola | 0:ce17b48156eb | 62 | i-=512; | 
| milenicnikola | 0:ce17b48156eb | 63 | } | 
| milenicnikola | 0:ce17b48156eb | 64 | } | 
| milenicnikola | 0:ce17b48156eb | 65 | |
| milenicnikola | 0:ce17b48156eb | 66 | void SD_log_int(int f) | 
| milenicnikola | 0:ce17b48156eb | 67 | { | 
| milenicnikola | 0:ce17b48156eb | 68 | memcpy(writeBuffer+i, (char*) (&f), 4); | 
| milenicnikola | 0:ce17b48156eb | 69 | i+=4; | 
| milenicnikola | 0:ce17b48156eb | 70 | if(i>=512) { | 
| milenicnikola | 0:ce17b48156eb | 71 | sd.program(writeBuffer, block, 512); | 
| milenicnikola | 0:ce17b48156eb | 72 | block+=512; | 
| milenicnikola | 0:ce17b48156eb | 73 | sd.program(readBuffer, 0, 512); | 
| milenicnikola | 0:ce17b48156eb | 74 | |
| milenicnikola | 0:ce17b48156eb | 75 | for(int j=0; j+512<i; j++) { | 
| milenicnikola | 0:ce17b48156eb | 76 | writeBuffer[j]=writeBuffer[j+512]; | 
| milenicnikola | 0:ce17b48156eb | 77 | } | 
| milenicnikola | 0:ce17b48156eb | 78 | i-=512; | 
| milenicnikola | 0:ce17b48156eb | 79 | } | 
| milenicnikola | 0:ce17b48156eb | 80 | } | 
| milenicnikola | 0:ce17b48156eb | 81 | |
| milenicnikola | 0:ce17b48156eb | 82 | |
| milenicnikola | 0:ce17b48156eb | 83 | void SD_flush() | 
| milenicnikola | 0:ce17b48156eb | 84 | { | 
| milenicnikola | 0:ce17b48156eb | 85 | sd.program(writeBuffer, block, 512); | 
| milenicnikola | 0:ce17b48156eb | 86 | block+=512; | 
| milenicnikola | 0:ce17b48156eb | 87 | *bp=block; | 
| milenicnikola | 0:ce17b48156eb | 88 | sd.program(readBuffer, 0, 512); | 
| milenicnikola | 0:ce17b48156eb | 89 | i=0; | 
| milenicnikola | 0:ce17b48156eb | 90 | } |