Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: GloboMetereologico
Fork of SDFileSystem by
Diff: SDFileSystem.cpp
- Revision:
- 24:a52e682a1ce4
- Parent:
- 23:6bb3c1987511
- Child:
- 25:923df4ee70c4
--- a/SDFileSystem.cpp Wed Apr 13 16:51:25 2016 +0000
+++ b/SDFileSystem.cpp Tue May 24 15:50:26 2016 +0000
@@ -149,6 +149,7 @@
{
char token;
unsigned int resp;
+ Timer timer;
//Make sure there's a card in the socket before proceeding
checkSocket();
@@ -199,13 +200,13 @@
return m_Status;
}
- //Try to initialize the card using ACMD41(0x00100000)
- for (int i = 0; i < 1000; i++) {
+ //Try to initialize the card using ACMD41(0x40100000) for up to 2 seconds
+ timer.start();
+ do {
token = commandTransaction(ACMD41, 0x40100000);
- if (token != 0x01) {
- break;
- }
- }
+ } while (token == 0x01 && timer.read_ms() < 2000);
+ timer.stop();
+ timer.reset();
//Check if the card initialized
if (token != 0x00) {
@@ -250,13 +251,13 @@
return m_Status;
}
- //Try to initialize the card using ACMD41(0x00100000)
- for (int i = 0; i < 1000; i++) {
+ //Try to initialize the card using ACMD41(0x40100000) for up to 2 seconds
+ timer.start();
+ do {
token = commandTransaction(ACMD41, 0x40100000);
- if (token != 0x01) {
- break;
- }
- }
+ } while (token == 0x01 && timer.read_ms() < 2000);
+ timer.stop();
+ timer.reset();
//Check if the card initialized
if (token == 0x00) {
@@ -269,13 +270,13 @@
else
m_Spi.frequency(m_FREQ);
} else {
- //Try to initialize the card using CMD1(0x00100000)
- for (int i = 0; i < 1000; i++) {
+ //Try to initialize the card using CMD1(0x00100000) for up to 2 seconds
+ timer.start();
+ do {
token = commandTransaction(CMD1, 0x00100000);
- if (token != 0x01) {
- break;
- }
- }
+ } while (token == 0x01 && timer.read_ms() < 2000);
+ timer.stop();
+ timer.reset();
//Check if the card initialized
if (token == 0x00) {
