SD Shield. Проблема подключения. Ошибка инициализации
- Войдите на сайт для отправки комментариев
Пт, 04/01/2013 - 23:58
Доброй ночи.
Собственно сама планка расширения - IM120417007
Основная плата Freaduino 2560
Тестовый скетч:
#include <SD.h> File myFile; void setup() { Serial.begin(9600); Serial.print("Initializing SD card…"); pinMode(10, OUTPUT); if (!SD.begin(53)) { 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() { }
Карта SDHC 2класс на 4gb отформатирована в FAT с размером кластера в 64кб
К своему удивлению, нигде не нашел нормальной информации относительно этого шилда, его распиновки.
Собственно вся работа заканчивается на этом моменте Serial.println("initialization failed!");
Кто-нибудь работал с этим шилдом или с аналогичными?
>Собственно сама планка расширения - IM120417007
Вообщем кому нужно - гуглите сами что это за зверь.
http://www.lipoly.de/index.php?main_page=product_info&cPath=880_895_1296...
Там же читаем Note: SDHC is not supported.
Могу ошибатся, но помоему стандартная либа вроде только FAT16 работает. Если либы и на FAT32, но тормозючие они. (хотя пишут что вроде и стандартная уже FAT32 понимает, но я бы все-таки рекомендовал начинать с "проверенного"). К тому же еще и имена файлов дайте в формате 8.3 и только "в корень карты".
Вообщем возмите вначале карточку поменьше. Добейтесь работы с ней, а потом уже будете большие пытатся заставить работать.
Подход к заставлянию такой: смотрим что за пины задействованы D10,D11,D12,D13. На http://arduino.cc/en/Reference/SD видим что эти же пины указаны как SPI (через него работает SD) для большинства карт. А вот для меги это 50,51,52,53 пины (да. это значит что "просто воткнуть шил - не покатит". нужно ложить шилд рядом и тянуть в пины сопли/проводки).
Что-бы точно высянить какой пин меги соотвесвует "обычной плате" идет, к примеру http://arduino.ru/Hardware/ArduinoBoardUno
Находим там описание интерфейа SPI. Видим что каждый пин из этих D10,D11,D12,D13 имеет особое имя SS,MOSI,MISO, SCK
ПОтом идем в описание меги, и там смотрим какие номера имеют пины с этими именами.
И выясняем "кого/куда". К примеру D10 пин шилда, это SS. На меге SS Это 53-тин пин. Значит нужно D10 шилда, воткнуть в D53, а не "куда шилд влазит".
Аналогично для остальных трех. Ну и питание и с землей подвести.
>Тестовый скетч:
Читамем прекрепленную ветку http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Теперь то же самое нужно для меги выяснить
http://arduino.ru/Hardware/ArduinoBoardMega
>SDHC поддерживается точно
Ну как хотите. Но я бы вначале "максимально упростил". Снизил даже теоретическую возможность проблем. Вначале добился что-бы "хоть что-то заработало", а уж потом занимался "гигабайтами".
Тут иногда бывает "ну вот просто не нравится ему эта карта и все" (хотя карта 100% рабочая). Кстати это тоже проверьте - тупо другую карточку попробовать. А еще бывает "форматнуть" нужно в чистую. Просто "все удалить" - не помогает. Уж не знаю почему.
Уже.
Проблема в том, что под рукой только 4,32 и 64 гб)) завтра зайду, возьму попроще, уже понял это
Спасибо
Че-то я вас не понимаю. Я же дал в #1 ссылку где распиновку можно увидеть. Первая моя ссылка.
Да и "сие" с офсайта ее содержит. Табличка в разделе Hardware это не распиновка?
Да даже просто зная что зная что работает по SPI можно догадатся о распиновке (что в #2 вы и сделали).
Немного смущает что в описании продукта у них написано что она совместима с мегой, а по факту выходить что нужен "напильник" для этого.
Именно это факт совместимости и сбил с пути истенного.
Огромное Вам спасибо, второй день помогаете, все сделал, на удивление-работает))))
Именно это факт совместимости и сбил с пути истенного.
Этим мега плоха для новичка (отличие распиновки). С другой стороны хорошо - заставляет новичка быстрее понять откуда берется нумерация ног и что же именно digitalWrite прячет под собой. Меня - заставила ;)
Вот вам еще пара полезных ссылок:
http://arduino.cc/en/Hacking/PinMapping168
http://arduino.cc/en/Hacking/PinMapping2560
Пригодятся если попадется какая-то библиотека/пример работающие не через digiatlWrite , а напрямую с портами.
Собственно по ним тоже можно увидить куда SPI пины убежали. Или где есть PWM а где нет и т.п.
Кстати, на меге, лично мне удобней (я просто сделал шлейфик) забирать SPI не с 50-тых контактов, а с ICSP разъема. Они еще и туда продублированы (кроме SS - его все равно отдельно тянуть приходится):
Кстати поэтому, если видите на SD шилде отвеку для этого разъема - шансы что он будет работать на меге без дополнительных проводов - резко увеличиваются.
Посмотрите, кстати, какой может и у вас, получится в макетное поле поставить "маму" которая попадет туда.
Огромное Вам спасибо, второй день помогаете, все сделал, на удивление-работает))))
Не знаю, не знаю. Вот тут некоторые жалуются что "травлю новичков", в гугл и документацию посылаю ;)
Ну и чудно что заработало. Я в таких случаях всегда вспоминаю как сам сидел с улыбкой до ушей минут 20-ть созерцая мигающий диод первого своего девайса на макете :)
Самое интересное, что так и подключил))
Ух ты, и такие особи попадаются?
Вот, знакомое чувство, испытывал его в 5утра))
Так, все 3 скетча по отдельности работают, осталось объединить их