| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- /*
 
-  * This program demonstrates the freeClusterCount() call.
 
-  */
 
- #include <SPI.h>
 
- #include "SdFat.h"
 
- #include "sdios.h"
 
- /*
 
-  * SD chip select pin.  Common values are:
 
-  *
 
-  * Arduino Ethernet shield, pin 4.
 
-  * SparkFun SD shield, pin 8.
 
-  * Adafruit Datalogging shield, pin 10.
 
-  * Default SD chip select is the SPI SS pin.
 
-  */
 
- const uint8_t chipSelect = SS;
 
- #define TEST_FILE "Cluster.test"
 
- // file system
 
- SdFat sd;
 
- // test file
 
- SdFile file;
 
- // Serial output stream
 
- ArduinoOutStream cout(Serial);
 
- //------------------------------------------------------------------------------
 
- void printFreeSpace() {
 
-   cout << F("freeClusterCount() call time: ");
 
-   uint32_t m = micros();
 
-   uint32_t volFree = sd.vol()->freeClusterCount();
 
-   cout << micros() - m << F(" micros\n");
 
-   cout << F("freeClusters: ") <<  volFree << setprecision(3) << endl;
 
-   float fs = 0.000512*volFree*sd.vol()->blocksPerCluster();
 
-   cout << F("freeSpace: ") << fs << F(" MB (MB = 1,000,000 bytes)\n\n");
 
- }
 
- //------------------------------------------------------------------------------
 
- void setup() {
 
-   Serial.begin(9600);
 
-   // Wait for USB Serial
 
-   while (!Serial) {
 
-     yield();
 
-   }
 
-   if (!MAINTAIN_FREE_CLUSTER_COUNT) {
 
-     cout << F("Please edit SdFatConfig.h and set\n");
 
-     cout << F("MAINTAIN_FREE_CLUSTER_COUNT nonzero for\n");
 
-     cout << F("maximum freeClusterCount() performance.\n\n");
 
-   }
 
-   // F stores strings in flash to save RAM
 
-   cout << F("Type any character to start\n");
 
-   while (!Serial.available()) {
 
-     yield();
 
-   }
 
-   // Initialize at the highest speed supported by the board that is
 
-   // not over 50 MHz. Try a lower speed if SPI errors occur.
 
-   if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) {
 
-     sd.initErrorHalt();
 
-   }
 
-   // Insure no TEST_FILE.
 
-   sd.remove(TEST_FILE);
 
-   cout << F("\nFirst call to freeClusterCount scans the FAT.\n\n");
 
-   printFreeSpace();
 
-   cout << F("Create and write to ") << TEST_FILE << endl;
 
-   if (!file.open(TEST_FILE, O_WRONLY | O_CREAT)) {
 
-     sd.errorHalt(F("Create failed"));
 
-   }
 
-   file.print(F("Cause a cluster to be allocated"));
 
-   file.close();
 
-   cout << F("\nSecond freeClusterCount call is faster if\n");
 
-   cout << F("MAINTAIN_FREE_CLUSTER_COUNT is nonzero.\n\n");
 
-   printFreeSpace();
 
-   cout << F("Remove ") << TEST_FILE << endl << endl;
 
-   sd.remove(TEST_FILE);
 
-   printFreeSpace();
 
-   cout << F("Done") << endl;
 
- }
 
- //------------------------------------------------------------------------------
 
- void loop() {}
 
 
  |