Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SdFat interfare with Serial.print or Arduio IDE Serial Monitor? #26

Open
dchrzan opened this issue Mar 24, 2024 · 0 comments
Open

SdFat interfare with Serial.print or Arduio IDE Serial Monitor? #26

dchrzan opened this issue Mar 24, 2024 · 0 comments

Comments

@dchrzan
Copy link

dchrzan commented Mar 24, 2024

Operating System

Windows 10

IDE version

2.3.2

Board

SeedStudio Xiao ESP32 C3

BSP version

latest

SPIFlash Library version

4.3.4

Sketch

// SPDX-FileCopyrightText: 2023 Liz Clark for Adafruit Industries
//
// SPDX-License-Identifier: MIT
/*
SD card read/write

This example shows how to read and write data to and from an SD card file
The circuit:

  • SD card attached to SPI bus as follows:
    ** MOSI - pin 11
    ** MISO - pin 12
    ** CLK - pin 13

created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
modified 14 Feb 2023
by Liz Clark

This example code is in the public domain.

*/

#include <SPI.h>
//#include <SD.h>
#include "SdFat.h"
SdFat SD;

#define SD_FAT_TYPE 3

// default CS pin is TX for microSD BFF
#define SD_CS_PIN A1

File myFile;

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.print("Initializing SD card...");

if (!SD.begin(SD_CS_PIN)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);

// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
myFile.println("hello bff!");
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}

// re-open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");

// read from the file until there's nothing else in it:
while (myFile.available()) {
  Serial.write(myFile.read());
}
// close the file:
myFile.close();

} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}

void loop() {
// nothing happens after setup
}

What happened ?

Writing to SD CARD is supposed to interfere with Serial.print / Serial.println functions. Every time I open or close Serial Monitor in Arduino IDE the application write a new line to “test.txt” file – although the writing code is inside “Setup” function.

I have tried to print anything 10 times in “Loop” function using Serial.println – I’ve got the same effect -> new 10 lines in the test.txt file had been written.

Closing and oppening Serial Monitor in Arduino IDE also seams to reset the whole board? (the card is initializing from the beginning – I can see it by booth printed Serial communicates and by file operations – ie. File is created if erased).

How to reproduce ?

  1. clear SD card (erase all files)
  2. insert MicroSD card to Adafruit microSD card reader
  3. upload code using Arduino IDE
  4. In Arduino IDE open and close Serial Monitor few times

Debug Log

No response

Screenshots

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant