mmc card
- Войдите на сайт для отправки комментариев
Здравствуйте! Пытаюсь собрать устройство, которое будет воспроизводить звуки wav формата, точнее это будет одна из его функций. В начале начал собирать устройство в Proteus, вот только с CD картой у меня начались проблемы, в протеусе есть что то подобное насывается mmc
http://kazus.ru/forums/showthread.php?t=5564 Тут нашел как создавать образ для ее нормальное работы
http://habrahabr.ru/post/115176/ тут нашел код и как ее подключать.
Вот код программы
/* SD card read/write Этот пример показывает как читать и писать данные на и из файла на SD карточке Схема подключения * SD карточка подсоеденина к SPI шине: ** MOSI - pin 11 ** MISO - pin 12 ** CLK - pin 13 ** CS - pin 10 создано Ноябрь 2010 David A. Mellis обновлено 2 Декабря 2010 Tom Igoe и переведено в Марте 2011 Gleb Devyatkin Этот пример кода - народное достояние. */ #include <SPI.h> #include <SD.h> File myFile; void setup() { Serial.begin(9600); Serial.print("Initializing SD card..."); // On the Ethernet Shield, CS is pin 4. It's set as an output by default. // Note that even if it's not used as the CS pin, the hardware SS pin // (10 on most Arduino boards, 53 on the Mega) must be left as an output // or the SD library functions will not work. pinMode(10, OUTPUT); if (!SD.begin(10)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // открываем файл. заметте, что только один файл может быть открыт за раз, // поэтому вы должны закрыть этот, чтобы открыть другой. myFile = SD.open("test.txt", FILE_WRITE); // если файл нормально открылся, запишем в него: if (myFile) { Serial.print("Writing to test.txt..."); myFile.println("testing 1, 2, 3."); // закрываем файл: myFile.close(); Serial.println("done."); } else { // а если он не открылся, то печатаем сообщение об ошибке: Serial.println("error opening test.txt"); } // откроем файл снова, для чтения: myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); // читаем из файла, пока не достигнем конца файла: while (myFile.available()) { Serial.write(myFile.read()); } // закрываем файл: myFile.close(); } else { // а если не открылся, то пишем об ошибке: Serial.println("error opening test.txt"); } } void loop() { // больше делать нечего, но тут мог бы быть ваш код }
Вот как я ее подключил в протеусе и результат работы программы
Образ у меня появляется в папке вместе с проектом, только он пустой. А из терминала видно что флешки нет. Может я чего делаю не так? Помогите пожалуйста разобраться! Заранее большое спасибо!
Вообще то SD карта выбирается (CS) на 4 пине Ардуины, а не на 10м.
На 10м пине выбирается Ethernet модуль. А так как и карточка и езернет
работают по шине SPI (например езернет шилд имеет на борту и слот для карточки частенько),
то так выбирается что будет работать в текущий момент времени
Вообще то SD карта выбирается (CS) на 4 пине Ардуины, а не на 10м.
На 10м пине выбирается Ethernet модуль. А так как и карточка и езернет
работают по шине SPI (например езернет шилд имеет на борту и слот для карточки частенько),
то так выбирается что будет работать в текущий момент времени
CS переправил на 4 пин, в коде тоже поменял с 10 на 4. А остальное у меня правильно подсоединено или как соединить остальное?
Ну неужели никто не знает? Мне это очень важно!
Я так понял что порты указанные в примере (11,12,10) не подходят к Arduino Mega 2560?
Изменил на:
DI - 51
DO - 50
CLK - 52
CS - 4
Только это не решило проблему...
Вроде правильно, на меге 50 51 и 52 используется для spi.
Правда di и do видимо надо местами поменять у вас.
Вроде правильно, на меге 50 51 и 52 используется для spi.
Правда di и do видимо надо местами поменять у вас.
Попробовал по всякому уже! У меня вдруг возникла мысль, может Arduino работает только с SD картами? А у меня MMC. Неужели нет выхода?
Просто я пока жду
решил спроектировать устройство в протеусе.
У меня вдруг возникла мысль, может Arduino работает только с SD картами? А у меня MMC. Неужели нет выхода?
выход есть - отбросить нахрен все религиозные, расовые и политические запреты и попробовать заюзать SD карту.
Согласен! Но почему то нет в протеусе SD карт. Буду ждать посылку с Ebay, наверное больше выходов нет...
Хотя вроде тут http://forum.arduino.cc/index.php/topic,8314.0.html написанно что можно ее подключить
Согласен! Но почему то нет в протеусе SD карт. Буду ждать посылку с Ebay, наверное больше выходов нет...
SD-карты продаются в любом ларьке.
проблема не в протеусе а в библиотеке arduino
в файле C:\Program Files\Arduino\libraries\SD\src\utility\
в
SdInfo.h
добавить uint8_t const CMD1 = 0x01;
в Sd2Card.cpp добавить
bool useCmd1 = false; внутри Sd2Card::init(). после uint32_t arg;
а это
status_ = cardAcmd(ACMD41, arg);
while (status_ != R1_READY_STATE) {
// check for timeout
if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) {
error(SD_CARD_ERROR_ACMD41);
goto fail;
}
// Switch to CMD1 if the card fails to recognize ACMD41
if (status_ & R1_ILLEGAL_COMMAND) useCmd1 = true;
status_ = (!useCmd1 ? cardAcmd(ACMD41, arg) : cardCommand(CMD1, 0));
}
вместо этого
while ((status_ = cardAcmd(ACMD41, arg)) != R1_READY_STATE) {
// check for timeout
if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) {
error(SD_CARD_ERROR_ACMD41);
goto fail;
}
}
в файле
SD2Card.cpp
------------
и через winimage делать fat16