|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // An example of the SoftSpiDriver template class.
- // This example is for an old Adafruit Data Logging Shield on a Mega.
- // Software SPI is required on Mega since this shield connects to pins 10-13.
- // This example will also run on an Uno and other boards using software SPI.
- //
- #include <SPI.h>
- #include "SdFat.h"
- #if SPI_DRIVER_SELECT == 2 // Must be set in SdFat/SdFatConfig.h
-
- // SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h,
- // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT.
- #define SD_FAT_TYPE 0
- //
- // Chip select may be constant or RAM variable.
- const uint8_t SD_CS_PIN = 10;
- //
- // Pin numbers in templates must be constants.
- const uint8_t SOFT_MISO_PIN = 12;
- const uint8_t SOFT_MOSI_PIN = 11;
- const uint8_t SOFT_SCK_PIN = 13;
-
- // SdFat software SPI template
- SoftSpiDriver<SOFT_MISO_PIN, SOFT_MOSI_PIN, SOFT_SCK_PIN> softSpi;
- // Speed argument is ignored for software SPI.
- #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(0), &softSpi)
-
- #if SD_FAT_TYPE == 0
- SdFat sd;
- File file;
- #elif SD_FAT_TYPE == 1
- SdFat32 sd;
- File32 file;
- #elif SD_FAT_TYPE == 2
- SdExFat sd;
- ExFile file;
- #elif SD_FAT_TYPE == 3
- SdFs sd;
- FsFile file;
- #else // SD_FAT_TYPE
- #error Invalid SD_FAT_TYPE
- #endif // SD_FAT_TYPE
-
- void setup() {
- Serial.begin(9600);
- // Wait for USB Serial
- while (!Serial) {
- SysCall::yield();
- }
- Serial.println("Type any character to start");
- while (!Serial.available()) {
- SysCall::yield();
- }
-
- if (!sd.begin(SD_CONFIG)) {
- sd.initErrorHalt();
- }
-
- if (!file.open("SoftSPI.txt", O_RDWR | O_CREAT)) {
- sd.errorHalt(F("open failed"));
- }
- file.println(F("This line was printed using software SPI."));
-
- file.rewind();
-
- while (file.available()) {
- Serial.write(file.read());
- }
-
- file.close();
-
- Serial.println(F("Done."));
- }
- //------------------------------------------------------------------------------
- void loop() {}
- #else // SPI_DRIVER_SELECT
- #error SPI_DRIVER_SELECT must be two in SdFat/SdFatConfig.h
- #endif //SPI_DRIVER_SELECT
|