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