LiviuM 43 Posted May 15, 2017 Share Posted May 15, 2017 From the description of the error codes (pff.h), pff.h /* File function return code (FRESULT) */ typedef enum { FR_OK = 0, /* 0 */ FR_DISK_ERR, /* 1 */ FR_NOT_READY, /* 2 */ FR_NO_FILE, /* 3 */ FR_NOT_OPENED, /* 4 */ FR_NOT_ENABLED, /* 5 */ FR_NO_FILESYSTEM /* 6 */ } FRESULT; I understand that rc=3 means the file you are trying to open doesn't exist and that rc=6 means bad connection. In the same time, reading one of the original posts: Quote The write function has some limitations : Cannot create file. Only existing file can be written. Cannot expand file size. Cannot update time stamp of the file. Write operation can start/stop on the sector boundary. Read-only attribute of the file cannot block write operation. I understand that the files should exist before trying to access them. With these considerations, I suppose your first set-up (the one with rc=3) is correct and the file you try to access doesn't exist. Cheers, Liviu PS I'll PM you my bank data. Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 24, 2017 Share Posted May 24, 2017 Code: /*----------------------------------------------------------------------*/ /* Petit FatFs sample project for generic uC (C)ChaN, 2010 */ /*----------------------------------------------------------------------*/ /* ported to Energia */ /* copy the two files t_read.txt and t_write.txt from the example folder in the root of the sd card*/ #include "SPI.h" #include "pfatfs.h" #define cs_pin 10 // chip select pin #define read_buffer 128 // size (in bytes) of read buffer uint16_t bw, br;//, i; char buffer[read_buffer]; int rc; DIR dir; /* Directory object */ FILINFO fno; /* File information object */ void setup() { pinMode(PUSH2, INPUT_PULLUP); Serial.begin(9600); // initialize the serial terminal FatFs.begin(cs_pin); // initialize FatFS library calls } void die ( /* Stop with dying message */ int pff_err /* FatFs return value */ ) { Serial.println();Serial.print("Failed with rc=");Serial.print(pff_err,DEC); for (;;) ; } /*-----------------------------------------------------------------------*/ /* Program Main */ /*-----------------------------------------------------------------------*/ void loop() { Serial.println(); Serial.println("Press button to start..."); while(digitalRead(PUSH2)==1){} delay(100); while(digitalRead(PUSH2)==0){} //Serial.print("\nMount a volume.\n"); //rc = FatFs.mount(&fatfs); //if (rc) die(rc); Serial.println(); Serial.println("Open a test file (t_read.txt)."); delay(100); rc = FatFs.open("T_READ.TXT"); if (rc) die(rc); Serial.println(); Serial.println("Type the file content."); delay(100); for (;;) { rc = FatFs.read(buffer, sizeof(buffer), &br); /* Read a chunk of file */ if (rc || !br) break; /* Error or end of file */ for (uint16_t i = 0; i < br; i++) /* Type the data */ Serial.print(buffer); delay(100); } if (rc) die(rc); Serial.println(); Serial.println("Open a file to write (t_write.txt)."); delay(100); rc = FatFs.open("T_WRITE.TXT"); if (rc) die(rc); Serial.println(); Serial.println("Write a text data. (10 x Hello world!)"); delay(100); bw=0; for (uint16_t i=0;i<10;i++) { rc = FatFs.write("Hello world!\r\n", 14, &bw); if (rc || !bw) break; } if (rc) die(rc); rc = FatFs.write(0, 0, &bw); //Finalize write if (rc) die(rc); // Serial.println(); // Serial.println("Terminate the file write process."); // delay(100); // rc = FatFs.write(0, 0, &bw); // //if (rc) die(rc); delay(100); Serial.println(); Serial.println("Verify the write process (t_write.txt)."); delay(100); rc = FatFs.open("T_WRITE.TXT"); if (rc) die(rc); Serial.println(); Serial.println("Type the file content."); delay(100); for (;;) { rc = FatFs.read(buffer, sizeof(buffer), &br); /* Read a chunk of file */ if (rc || !br) break; /* Error or end of file */ for (uint16_t i = 0; i < br; i++) /* Type the data */ Serial.print(buffer); delay(100); } if (rc) die(rc); Serial.println(); Serial.println("Open root directory."); delay(100); rc = FatFs.opendir(&dir, ""); if (rc) die(rc); Serial.println(); Serial.println("Directory listing..."); delay(100); for (;;) { rc = FatFs.readdir(&dir, &fno); /* Read a directory item */ if (rc || !fno.fname[0]) break; /* Error or end of dir */ if (fno.fattrib & AM_DIR) {Serial.print("<dir>\t"); Serial.println(fno.fname);delay(100);} else {Serial.print(fno.fsize);Serial.print("\t"); Serial.println(fno.fname);delay(100);} } if (rc) die(rc); Serial.println(); Serial.print("Test completed."); //for (;;) ; } error : Energia: 1.6.10E18 (Linux), Board: "MSP-EXP430F5529LP" WARNING: Spurious .github folder in 'RTClib' library <command-line>:0:12: warning: missing whitespace after the macro name [enabled by default] In file included from /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:17:0, from /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/examples/PetitFatFsTest/PetitFatFsTest.ino:9: /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:120:3: error: expected unqualified-id before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:120:3: error: expected ')' before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:158:25: error: expected primary-expression before ',' token /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:158:27: error: expected primary-expression before 'const' /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:158:38: error: expression list treated as compound expression in initializer [-fpermissive] /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:159:25: error: expected primary-expression before ',' token /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:159:34: error: expected primary-expression before '*' token /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:159:35: error: expected primary-expression before ')' token /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pff.h:159:35: error: expression list treated as compound expression in initializer [-fpermissive] In file included from /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/examples/PetitFatFsTest/PetitFatFsTest.ino:9:0: /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:31:11: error: expected unqualified-id before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:31:11: error: expected ')' before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:75:19: error: expected identifier before '(' token /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:75:19: error: expected ')' before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:75:19: error: expected ')' before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:75:19: error: expected ';' at end of member declaration /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:75:19: error: expected unqualified-id before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:78:19: error: expected identifier before '(' token /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:78:19: error: expected ')' before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:78:19: error: expected ')' before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:78:19: error: expected ';' at end of member declaration /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:78:19: error: expected unqualified-id before numeric constant PetitFatFsTest:17: error: expected unqualified-id before numeric constant PetitFatFsTest:17: error: expected ')' before numeric constant /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/examples/PetitFatFsTest/PetitFatFsTest.ino: In function 'void loop()': PetitFatFsTest:62: error: invalid conversion from 'uint16_t* {aka unsigned int*}' to 'WORD* {aka short unsigned int*}' [-fpermissive] /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:69:10: error: initializing argument 3 of 'FRESULT PFFS::read(void*, WORD, WORD*)' [-fpermissive] PetitFatFsTest:81: error: invalid conversion from 'uint16_t* {aka unsigned int*}' to 'WORD* {aka short unsigned int*}' [-fpermissive] /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:83:10: error: initializing argument 3 of 'FRESULT PFFS::write(const void*, WORD, WORD*)' [-fpermissive] PetitFatFsTest:85: error: invalid conversion from 'uint16_t* {aka unsigned int*}' to 'WORD* {aka short unsigned int*}' [-fpermissive] /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:83:10: error: initializing argument 3 of 'FRESULT PFFS::write(const void*, WORD, WORD*)' [-fpermissive] PetitFatFsTest:106: error: invalid conversion from 'uint16_t* {aka unsigned int*}' to 'WORD* {aka short unsigned int*}' [-fpermissive] /media/hemang/586E740B6E73DFE4/msp/energia-1.6.10E18/libraries/PFatFs/pfatfs.h:69:10: error: initializing argument 3 of 'FRESULT PFFS::read(void*, WORD, WORD*)' [-fpermissive] PetitFatFsTest:117: error: 'dir' was not declared in this scope exit status 1 expected unqualified-id before numeric constant This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences. Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 24, 2017 Share Posted May 24, 2017 petitfs library is real shit... I am working for like a month and still cnt get any success... Quote Link to post Share on other sites
Rickta59 589 Posted May 24, 2017 Share Posted May 24, 2017 "It's a poor craftsman that blames his tools" What are you trying to accomplish? Why are you using a severely under powered msp430g2553? With all the other options available to you why would you flog yourself with this approach? Quote Link to post Share on other sites
LiviuM 43 Posted May 24, 2017 Share Posted May 24, 2017 1 hour ago, hemangjoshi37a said: error : Energia: 1.6.10E18 (Linux), Board: "MSP-EXP430F5529LP" Have you read this post and the following ones (with a possible solution)? Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 25, 2017 Share Posted May 25, 2017 (edited) 21 hours ago, LiviuM said: Have you read this post and the following ones (with a possible solution)? LiviumM thank you very much for support. But i still get error rc=6. I have connected my pins MSP SD card P2.6 1 - SS P3.1 MISO 2-MOSI GND 3-GND VCC 4-VCC P3.2 CLK 5-SCK GND ---- 6 P3.0 MOSI 7 MISO I am using 5529 Launchpad Code : /*----------------------------------------------------------------------*/ /* Petit FatFs sample project for generic uC (C)ChaN, 2010 */ /*----------------------------------------------------------------------*/ /* ported to Energia */ /* copy the two files t_read.txt and t_write.txt from the example folder in the root of the sd card*/ #include "SPI.h" #include "pfatfs.h" #define cs_pin P2_6 // chip select pin #define read_buffer 128 // size (in bytes) of read buffer unsigned short int bw, br;//, i; char buffer[read_buffer]; int rc; FSDIR dir; /* Directory object */ FILINFO fno; /* File information object */ void setup() { pinMode(PUSH2, INPUT_PULLUP); Serial.begin(9600); // initialize the serial terminal FatFs.begin(cs_pin); // initialize FatFS library calls } void die ( /* Stop with dying message */ int pff_err /* FatFs return value */ ) { Serial.println();Serial.print("Failed with rc=");Serial.print(pff_err,DEC); for (;;) ; } /*-----------------------------------------------------------------------*/ /* Program Main */ /*-----------------------------------------------------------------------*/ void loop() { Serial.println(); Serial.println("Press button to start..."); while(digitalRead(PUSH2)==1){} delay(100); while(digitalRead(PUSH2)==0){} Serial.println(); Serial.println("Open a test file (t_read.txt)."); delay(100); rc = FatFs.open("T_READ.TXT"); if (rc) die(rc); Serial.println(); Serial.println("Type the file content."); delay(100); for (;;) { rc = FatFs.read(buffer, sizeof(buffer), &br); /* Read a chunk of file */ if (rc || !br) break; /* Error or end of file */ for (uint16_t i = 0; i < br; i++) /* Type the data */ Serial.print(buffer); delay(100); } if (rc) die(rc); Serial.println(); Serial.println("Open a file to write (t_write.txt)."); delay(100); rc = FatFs.open("T_WRITE.TXT"); if (rc) die(rc); Serial.println(); Serial.println("Write a text data. (10 x Hello world!)"); delay(100); bw=0; for (uint16_t i=0;i<10;i++) { rc = FatFs.write("Hello world!\r\n", 14, &bw); if (rc || !bw) break; } if (rc) die(rc); rc = FatFs.write(0, 0, &bw); //Finalize write if (rc) die(rc); delay(100); Serial.println(); Serial.println("Verify the write process (t_write.txt)."); delay(100); rc = FatFs.open("T_WRITE.TXT"); if (rc) die(rc); Serial.println(); Serial.println("Type the file content."); delay(100); for (;;) { rc = FatFs.read(buffer, sizeof(buffer), &br); /* Read a chunk of file */ if (rc || !br) break; /* Error or end of file */ for (uint16_t i = 0; i < br; i++) /* Type the data */ Serial.print(buffer); delay(100); } if (rc) die(rc); Serial.println(); Serial.println("Open root directory."); delay(100); rc = FatFs.opendir(&dir, ""); if (rc) die(rc); Serial.println(); Serial.println("Directory listing..."); delay(100); for (;;) { rc = FatFs.readdir(&dir, &fno); /* Read a directory item */ if (rc || !fno.fname[0]) break; /* Error or end of dir */ if (fno.fattrib & AM_DIR) {Serial.print("<dir>\t"); Serial.println(fno.fname);delay(100);} else {Serial.print(fno.fsize);Serial.print("\t"); Serial.println(fno.fname);delay(100);} } if (rc) die(rc); Serial.println(); Serial.print("Test completed."); //for (;;) ; } Edited May 25, 2017 by bluehash [ADMIN] Please use code tags<> next time. Thank you! Quote Link to post Share on other sites
LiviuM 43 Posted May 25, 2017 Share Posted May 25, 2017 MISO should be connected with MISO, MOSI with MOSI, not crossed. MISO means Master In Slave Out, and MOSI means Master Out Slave In. Master & slave are always the same, no crossing is needed. bluehash and hemangjoshi37a 2 Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 26, 2017 Share Posted May 26, 2017 22 hours ago, LiviuM said: MISO should be connected with MISO, MOSI with MOSI, not crossed. MISO means Master In Slave Out, and MOSI means Master Out Slave In. Master & slave are always the same, no crossing is needed. YESSSSSSS............ It solved my problem yo... Thank you very much... now i dont get any error in my serial terminal screen.. It shows that it is writing some Hello to t_write.txt file. But nothing is getting written on the SD card. When i remove my SD card from the SD card shield and play it in my PC, the file is empty, both - t_read.txt and t_write. But still we are much closer for SD card datalogging... I also tried this code. which can continuously log the analog read signal to LOG.txt file. In teminal it shows that the analog read is getting writtten to SD card but when i play to my PC it is also empty file.. What could be the possible reason?? Quote Link to post Share on other sites
LiviuM 43 Posted May 26, 2017 Share Posted May 26, 2017 Hi, nice to see that making the connection properly bring it to work. Carefully reading the replies you receive may even accelerate the success. For your last problem - writing without writing - maybe you should open the file in the correct mode. In this case the mode should be FA_WRITE. Try to replace On 5/25/2017 at 1:49 PM, hemangjoshi37a said: rc = FatFs.open("T_WRITE.TXT"); with rc = FatFs.open("T_WRITE.TXT", FA_WRITE); or rc = FatFs.open("T_WRITE.TXT", FA_WRITE | FA_READ); for read & write access. hemangjoshi37a 1 Quote Link to post Share on other sites
LiviuM 43 Posted May 26, 2017 Share Posted May 26, 2017 LE I've read the examples coming with PetitFS and they aren't using the mode specifier neither. No idea why it doesn't work for you. hemangjoshi37a 1 Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 26, 2017 Share Posted May 26, 2017 1 minute ago, LiviuM said: Hi, nice to see that making the connection properly bring it to work. Carefully reading the replies you receive may even accelerate the success. For your last problem - writing without writing - maybe you should open the file in the correct mode. In this case the mode should be FA_WRITE. Try to replace with rc = FatFs.open("T_WRITE.TXT", FA_WRITE); or rc = FatFs.open("T_WRITE.TXT", FA_WRITE | FA_READ); for read & write access. It gives me error when i compile...: petitfs:69: error: 'FA_WRITE' was not declared in this scope petitfs:69: error: 'FA_READ' was not declared in this scope Quote Link to post Share on other sites
LiviuM 43 Posted May 26, 2017 Share Posted May 26, 2017 Yes, I've seen, I've read the wrong documentation. Should work without mode qualifiers. hemangjoshi37a 1 Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 26, 2017 Share Posted May 26, 2017 Just now, LiviuM said: Yes, I've seen, I've read the wrong documentation. Should work without mode qualifiers. Yes I see. The file log.txt is read-only file by default. So I think if I change it to read and write accessible from linux, it will work fine. I am trying to change read-only to read and write accessible but it is not changing somehow... Screencast 2017-05-26 18:08:02.mp4 Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 26, 2017 Share Posted May 26, 2017 I also tried with root user but i cant change the file permission from read-only to read and write. But anyway thax for solving my problem. I LiviuM you have not solved my problem i would have always believed that we cant do data logging in SD card. Thax Yo..... Quote Link to post Share on other sites
hemangjoshi37a 0 Posted May 26, 2017 Share Posted May 26, 2017 for datalogging in SD card which format type of SD card is allowed?? NTFS, FAT32 or FAT16 or any else?? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.