Ich versuche mit den MSP430 Daten auf eine SD-Karte schreiben. Die Programmierung erfolgt mit Energia. Als Libary nutze ich "pfatfs.h". Leider schaffe ich noch nicht einmal die Intialisierung(rc=6). Hat einer schon Erfahrung mit einer SD-Karte und Energia. Wie kann man die SD-Routine von Arduino als Alternative nutzen? Die Libary "pfatfs" ist doch sehr rudimentär. Hier noch mein Code: #include "SPI.h" #include "pfatfs.h" #define cs_pin P2_0 // chip select pin #define read_buffer 128 // size (in bytes) of read buffer #define LOG_DELAY 5000 // 5000ms -> 5sec unsigned short int bw, br;//, i; char buffer[read_buffer]; int rc; char rr[20]; DIR dir; /* Directory object */ FILINFO fno; /* File information object */ uint32_t ui32_ReadTemp = 0; uint8_t StringLength = 0; char buf[30] = "Test1"; uint32_t counter = 0; uint32_t AccStringLength = 0; void setup() { Serial.begin(9600); // initialize the serial terminal rc = FatFs.begin(cs_pin); // initialize FatFS library calls if (rc) die(rc, 0); } /* Stop with dying message */ void die ( int pff_err , int pff_i) { Serial.println(); Serial.print("Failed with rc="); Serial.print(pff_err,DEC); Serial.print(" "); Serial.print(pff_i,DEC); for (;;) ; } /*---------------------------------------------------------------------- -*/ /* Program Main */ /*---------------------------------------------------------------------- -*/ void loop() { rc = FatFs.open("log.txt"); if (rc) die(rc, 1); delay(100); bw=0; rc = FatFs.lseek( AccStringLength ); if (rc) die(rc, 2); AccStringLength = AccStringLength + 512; rc = FatFs.write(buf, StringLength,&bw); if (rc) die(rc, 3); rc = FatFs.write(0, 0, &bw); //Finalize write if (rc) die(rc, 4); rc = FatFs.close(); //Close file if (rc) die(rc, 5); }
Werner L. schrieb: > Leider schaffe ich noch nicht einmal die Intialisierung(rc=6). Und, was sagt die Dokumentation, was der Rückgabewert 6 bedeutet?
Der Rückgabecode nützt nix, Ausschnit aus dem C++ Wrapper:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Das Symbol _USE_DIR hat 1 als default Wert. Damit wird der Rückgabecode von mount nicht ausgewertet und einfach weggeschmissen. Das nachfolgende pf_opendir() gibt den Code 6 (Dateisystem nicht geöffnet) als Folgefehler aus.
Gast
#4156148
So macht es TI: http://www.ti.com. c n/cn/lit/an/slaa281b/slaa281b.pdf und generic: http://elm-chan.org/fsw/ff/00index_e.html
Hallo Jim, vielen Dank für die Info. Aber wo und wie kann ich (als C-Laie) den Wert von _USE_DIR setzen? Werner
In einer der .h Dateien. Dort steht irgendwas wie //#define _USE_DIR Die // entfernen, schon ist _USE_DIR definiert.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.