| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | // This stress test will create and write files until the SD is full.#include <SPI.h> #include <SdFat.h>// SD chip select pin.const uint8_t SD_CS_PIN = SS;// Set write buffer size.#ifdef __arm__#ifndef CORE_TEENSY// Dueconst size_t BUF_SIZE = 32768;#else  // CORE_TEENSY// Teensy 3.0const size_t BUF_SIZE = 8192;#endif  // CORE_TEENSY#elif defined(RAMEND) && RAMEND > 5000// AVR with more than 4 KB RAMconst size_t BUF_SIZE = 4096;#else  // __arm__// otherconst size_t BUF_SIZE = 512;#endif  // __arm__const size_t FILE_SIZE_KB = 10240;const uint16_t BUFS_PER_FILE = (1024L*FILE_SIZE_KB/BUF_SIZE);SdFat sd;SdFile file;uint8_t buf[BUF_SIZE];char name[13];//------------------------------------------------------------------------------void setup() {  Serial.begin(9600);  Serial.print("BUF_SIZE ");  Serial.println(BUF_SIZE);  Serial.println("Type any character to start");  while (Serial.read() < 0) {}    if (!sd.begin(SD_CS_PIN))sd.errorHalt("sd.begin");    // Fill buf with known value.  for (size_t i = 0; i < BUF_SIZE; i++) buf[i] = i;    // Wait to begin.  do {delay(10);} while (Serial.read() >= 0);  Serial.println("Type any character to stop after next file");}//------------------------------------------------------------------------------void loop() {  // Free KB on SD.  uint32_t freeKB = sd.vol()->freeClusterCount()*sd.vol()->blocksPerCluster()/2;  Serial.print("Free KB: ");  Serial.println(freeKB);  if (freeKB < 2*FILE_SIZE_KB) {    Serial.println(" Done!");    while(1);  }  sprintf(name, "%lu.DAT", freeKB);  if (!file.open(name, O_WRITE | O_CREAT | O_TRUNC)) {    sd.errorHalt("Open error!");  }  for (uint16_t i = 0; i < BUFS_PER_FILE; i++) {    if (file.write(buf, BUF_SIZE) != BUF_SIZE) {      sd.errorHalt("Write error!");    }  }  file.close();  if (Serial.available()) {    Serial.println("Stopped!");    while(1);  }}
 |