1

Dependencies:   MODSERIAL USBDevice USBMSD_SD V09_01h

Dependents:   V09_01h

Committer:
rs27
Date:
Sat Jan 03 21:05:36 2015 +0000
Revision:
4:0e44fe33977a
Parent:
1:efee40e9d116
V09

Who changed what in which revision?

UserRevisionLine numberNew 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.