Hi jremington
I think it is a more general problem but please find attached the code:
#include <SPI.h>
#include <SD.h>
#define FILE_BASE_NAME "DATA"
const int CS_SD = 10;
const int CS_ADC = 9;
unsigned long i;
const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1;
char fileName[] = FILE_BASE_NAME "00.txt";
SPISettings settings1(1000000, MSBFIRST, SPI_MODE0);
void setup() {
pinMode(CS_ADC, OUTPUT);
Serial.begin(9600);
delay(1000);
while (!Serial) {
; // wait to connect
}
SPI.begin();
SPI.beginTransaction(settings1);
Serial.print("Initializing SD card...");
// card present
if (!SD.begin(CS_SD)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
while (SD.exists(fileName)) {
if (fileName[BASE_NAME_SIZE + 1] != '9') {
fileName[BASE_NAME_SIZE + 1]++;
} else if (fileName[BASE_NAME_SIZE] != '9') {
fileName[BASE_NAME_SIZE + 1] = '0';
fileName[BASE_NAME_SIZE]++;
} else {
Serial.println("Can't create file name");
return;
}
}
File dataFile = SD.open(fileName, O_CREAT | O_WRITE); // O_READ | O_WRITE | O_CREAT
if (!dataFile) {
Serial.println("open failed");
return;
}
//time = micros();
Serial.println("Start Recording");
for (i = 0; i < 40000; i++){
digitalWrite(CS_ADC, HIGH);
uint16_t adc_val_H = SPI.transfer16(0x0110); // dummy transfer
//delayMicroseconds(8);
// Write data
char cstr[5];
dataFile.write(itoa(-adc_val_H, cstr, 10)); //itoa (int val, char *s, int radix)
digitalWrite(CS_ADC, LOW);
//delayMicroseconds(1);
}
dataFile.close();
SPI.endTransaction();
Serial.println("Data Saved");
Serial.println(fileName);
}
void loop() {
}