1
Dependencies: MODSERIAL USBDevice USBMSD_SD V09_01h
info.txt@1:efee40e9d116, 2015-01-03 (annotated)
- Committer:
- rs27
- Date:
- Sat Jan 03 15:27:00 2015 +0000
- Revision:
- 1:efee40e9d116
123;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rs27 | 1:efee40e9d116 | 1 | Das Zusammenspiel zwischen dem USB Bus, der SD Karte und der Seriellen Schnittstelle |
rs27 | 1:efee40e9d116 | 2 | hat nicht richtig funktioniert. |
rs27 | 1:efee40e9d116 | 3 | |
rs27 | 1:efee40e9d116 | 4 | Sobald die SD Karte mit MODSERIAL verwendet wird, geht die SD Karte nicht mehr. Mit |
rs27 | 1:efee40e9d116 | 5 | der Umstellung auf BufferedSerial hat die SD Karte wieder funktioniert |
rs27 | 1:efee40e9d116 | 6 | |
rs27 | 1:efee40e9d116 | 7 | SDFileSystem Revison 17 März 2014, screamer |
rs27 | 1:efee40e9d116 | 8 | |
rs27 | 1:efee40e9d116 | 9 | Ein weiteres Problem ist das Auslesen der Zeit für eine Datei. Wird die Zeit ausgelesen |
rs27 | 1:efee40e9d116 | 10 | hängt sich die SD Karte auf. Das Auslesen der Zeit ist somit im mon.cpp auskommentiert. |
rs27 | 1:efee40e9d116 | 11 | |
rs27 | 1:efee40e9d116 | 12 | SD Formatieren >> FAT16 und FAT32 gehen mit dem SD File System. Mit USB geht nur FAT16 und Standart Formatierung |
rs27 | 1:efee40e9d116 | 13 | sind dann 32k Sektoren. |
rs27 | 1:efee40e9d116 | 14 | |
rs27 | 1:efee40e9d116 | 15 | |
rs27 | 1:efee40e9d116 | 16 | //----------------------------------------------------------------------------- |
rs27 | 1:efee40e9d116 | 17 | // monitor Aufruf dir |
rs27 | 1:efee40e9d116 | 18 | // |
rs27 | 1:efee40e9d116 | 19 | // weiter Infos siehe auch |
rs27 | 1:efee40e9d116 | 20 | // http://elm-chan.org/fsw/ff/00index_e.html |
rs27 | 1:efee40e9d116 | 21 | // |
rs27 | 1:efee40e9d116 | 22 | // Start node to be scanned (also used as work area) |
rs27 | 1:efee40e9d116 | 23 | FRESULT FATFileSystem::list_files (const char *name) |
rs27 | 1:efee40e9d116 | 24 | { |
rs27 | 1:efee40e9d116 | 25 | FRESULT res; |
rs27 | 1:efee40e9d116 | 26 | FILINFO fno; |
rs27 | 1:efee40e9d116 | 27 | FATFS_DIR dir; |
rs27 | 1:efee40e9d116 | 28 | int i; |
rs27 | 1:efee40e9d116 | 29 | char *fn; |
rs27 | 1:efee40e9d116 | 30 | |
rs27 | 1:efee40e9d116 | 31 | // some code |
rs27 | 1:efee40e9d116 | 32 | printf("\nscan_files Line 152"); |
rs27 | 1:efee40e9d116 | 33 | #if _USE_LFN |
rs27 | 1:efee40e9d116 | 34 | static char lfn[_MAX_LFN + 1]; |
rs27 | 1:efee40e9d116 | 35 | fno.lfname = lfn; |
rs27 | 1:efee40e9d116 | 36 | fno.lfsize = sizeof lfn; |
rs27 | 1:efee40e9d116 | 37 | #endif |
rs27 | 1:efee40e9d116 | 38 | |
rs27 | 1:efee40e9d116 | 39 | printf("\nscan_files Line 159"); |
rs27 | 1:efee40e9d116 | 40 | |
rs27 | 1:efee40e9d116 | 41 | res = f_opendir(&dir, name); // Open the directory |
rs27 | 1:efee40e9d116 | 42 | printf("\nscan_files Line 162"); |
rs27 | 1:efee40e9d116 | 43 | if (res == FR_OK) { |
rs27 | 1:efee40e9d116 | 44 | i = strlen(name); |
rs27 | 1:efee40e9d116 | 45 | for (;;) { |
rs27 | 1:efee40e9d116 | 46 | res = f_readdir(&dir, &fno); // Read a directory item |
rs27 | 1:efee40e9d116 | 47 | if (res != FR_OK || fno.fname[0] == 0) break; // Break on error or end of dir |
rs27 | 1:efee40e9d116 | 48 | if (fno.fname[0] == '.') continue; // Ignore dot entry |
rs27 | 1:efee40e9d116 | 49 | #if _USE_LFN |
rs27 | 1:efee40e9d116 | 50 | fn = *fno.lfname ? fno.lfname : fno.fname; |
rs27 | 1:efee40e9d116 | 51 | #else |
rs27 | 1:efee40e9d116 | 52 | fn = fno.fname; |
rs27 | 1:efee40e9d116 | 53 | #endif |
rs27 | 1:efee40e9d116 | 54 | if (fno.fattrib & AM_DIR) { // It is a directory |
rs27 | 1:efee40e9d116 | 55 | // sprintf(&name[i], "/%s", fn); |
rs27 | 1:efee40e9d116 | 56 | // res = scan_files(name); |
rs27 | 1:efee40e9d116 | 57 | // if (res != FR_OK) break; |
rs27 | 1:efee40e9d116 | 58 | // path[i] = 0; |
rs27 | 1:efee40e9d116 | 59 | } else { // It is a file. |
rs27 | 1:efee40e9d116 | 60 | printf("%s/%s\n", name, fn); |
rs27 | 1:efee40e9d116 | 61 | } |
rs27 | 1:efee40e9d116 | 62 | } |
rs27 | 1:efee40e9d116 | 63 | } |
rs27 | 1:efee40e9d116 | 64 | return res; |
rs27 | 1:efee40e9d116 | 65 | |
rs27 | 1:efee40e9d116 | 66 | ---------------------------------------------------------------------------------------------------------------------------- |
rs27 | 1:efee40e9d116 | 67 | 28.10.2014 |
rs27 | 1:efee40e9d116 | 68 | Nach eine Reset und danach kommen ab und zu Zeichen auf der seriellen Schnittselle an. Derzeit ist unklar woher die kommen. |
rs27 | 1:efee40e9d116 | 69 | Das hat sich geklärt. Die Zeichen kommen durch mangelhafte RS2323 Treiber. Nach dem Tausch des Treibers war das Problem behoben. |
rs27 | 1:efee40e9d116 | 70 | |
rs27 | 1:efee40e9d116 | 71 | Die verwendeten Treiber hatten ein Problem mit der Erzeugung der +- 15V. Die Spannung ist in der Beschaltung zeitweise eingebrochen |
rs27 | 1:efee40e9d116 | 72 | und hat damit ein Übersprechen auf die Empfangsleitung erzeugt. Unklar ist jedoch, warum sich diese Treiberbausteine so verhalten. |