Дополнительно подготовьте ваши любимые библиотеки для работы с UART чтобы выводить отладочные сообщения по каналу TX позже мы будем симулировать наш проект в Proteus. Дело касается функции void disk. По задумке, нам самим нужно реализовывать таймер и вызывать эту функцию каждые 1. Она выполняет роль привычного нам. Если вас смущает disk. Так что можете поглядеть там. Последние штрихи в этом файле нужно внести в функциях void power. SD-Firmware-Tool.png' alt='Создание Образа Карты Mmc Usb' title='Создание Образа Карты Mmc Usb' />В первых двух функциях изменяем инициализацию порта DDRB так, как нам нужно MISO должно быть входом, остальные MOSI, SCK и SS должны быть выходами. Кстати, в качестве SS может сгодиться любая другая ножка контроллера разумеется, относящаяся к порту вводавывода. Саму эту SS мы и указываем в директивах define CS. В комплект входит готовый ycable, cardreader и MicroSDкарта 2. USB Micro SD Card reader или USB SD Card reader. Жмем Load Goldcard. Patch MMC 12. С использованием уже готового образа goldcard. Таким образом, нет программы типа USB to ISO или простого способа создания образа ISO из любой загрузочной флешки и в. В качестве прошиваемого контроллера в проекте укажите ATMEGA3. Проверьте все в симуляторе Proteus нужно точно убедиться что все работает, чтобы потом не искать ошибку там, где ее нет. После, подключаем следующие файлы diskio. ВСЕОстальные файлы пока подключать не будем rtc. Не забудьте void disk. Создание Образа Карты Mmc Usb' title='Создание Образа Карты Mmc Usb' />Вот некоторые из опций. Чем различается 1 и 2 написано у них на сайте. Честно, я непомню. Все равно нам пока это не важно Далее все оставляем по дефолту, про некоторые оставшиеся параметры расскажу по ходу статьи. Все, с первоначальной настройкой ffconf. Теперь заранее создадим проект в симуляторе Proteus, чтобы потом уже не отвлекаться от программы. Симуляция SDMMC карты памяти в Proteus. Сложность тут не в подключении карты, а в образе диска, который нужно указать в настройках SDMMC карты. Странно, но в Proteus е я так и не нашел какого либо упоминания, чем нужно воспользоваться, чтобы создать образ диска. Пришлось перерыть немножко гугл с яндексом. В итоге что то нашел воспользоваться нужно программой Win. Image, увы, не бесплатной. Скачайте е откуда нибудь. Когда скачаете, давайте попробуем создать виртуальный образ диска. Открываем меню File New. В окне Format выбираем Select custom image format. В следующем окне я указал файловую систему FAT1. МБ 4. 09. 6 КБ отображено строкой ниже. Указать можете что то свое, но помните, что в Proteus можно выбрать только целые значения 1,2,4,8. Нажимаем ОК, сохраняем образ в файле sd. Перед нами пустое окно диск пуст. Перетащите любые файлыпапки из проводника Windows в окно Win. Image и сохраните образ. Внизу, в статусной строке указан объем диска 4. КБ и сколько КБ свободно. Посмотрите на файл sd. МБ т. е. Win. Image создал динамический образ, виртуально он занимает 4 МБ, реально 4 МБ минус свободное пространство. Чтобы этот файл sd. Proteus у, переименуйте его в sd. Теперь переходим в сам симулятор, добавляем в проект mega. MMC карту она же SD в нашем случае и терминал из вкладки виртуальные инструменты. В свойствах MMC карты указываем объем 4 МБ и файл sd. Подключаем терминал к mega. UART. Подключаем SD карту к контроллеру DI MOSI, DO MISO, CLK SCK, CS SSили другая, которая указана в директивах CS. Прошивку укажем позже. Схема в Proteus. Итак, начинаем с самого простого I. ТОЛЬКО ЧТЕНИЕ КАРТЫ БЕЗ ПОДДЕРЖКИ ДЛИННЫХ ИМЕН ФАЙЛОВНастройки. Для начала выставляем его в 1, тем самым отгораживая себя пока что от лишних функций и файлов. Модуль выбрасывает функции f. Все доступные функции можно посмотреть на сайте или открываем файл ff. Все функции модуля за исключением дополнительных, включаемых флагом. В случае успешного выполнения функции возвращают FRESULTFR. Для этого вызывается функция. DSTATUS disk. Ну вот давайте мы и попробуем вывести в терминал строку из файла, находящегося на SD карте. Для этого нам потребуются 3 функции f. Если у вас есть опыт работы с Win. API, например, на C, или даже Pascal то вам эти функции покажутся очень знакомыми. Byte. To. Read сколько байт читаем из файла, и, Byte. Read указатель на переменную, в которую запишется, сколько было байт считано в итоге после завершения функции. Это нужно для контроля, если вдруг функция неожиданно. Тогда будет считано только 5, а 1. Я это покажу в примере ниже. Если вы истинный джентельмен, то после использования файла его нужно закрыть. FRESULT f. Теперь открываем наш образ sd диска в Win. Image не поленитесь, и укажите, чтобы файлы. Win. Image по умолчанию и кидаем в него foo. Win. Image, чтобы доступ к образу был свободен для симулятора. Пишем программу. С UART работайте сами. Эту функцию реализуем также сами, т. Запускаем. Демонстрация чтения с SD карты. На фото видно, что удалось считать лишь 1. ЧТЕНИЕ И ЗАПИСЬ НА КАРТУ БЕЗ ПОДДЕРЖКИ ДЛИННЫХ ИМЕН ФАЙЛОВНастройки. Сбрасываем флаг только чтение. Мы хотим создавать и записывать информацию в файлы и папки. Теперь давайте отвлечемся и подумаем, что происходит, когда мы создаем на жестком диске файл или папку. Операционная система вначале записывает аттрибуты файлапапки дата создания, скрытый системный и т. Откуда наш модуль будет знать, скока щас время Правильно, нам нужен таймер к слову т. Но в системе FATxx время записывается в специальном формате, а не в том как мы привыкли видеть. Поэтому нужна некоторая функция, которая будет преобразовывать время попробуйте откомпилировать проект с. Давайте откроем rtc. Сразу бросается в глаза I2. C да, для получения времени здесь используется внешняя микросхема с интерфейсом I2. C. Часы реального времени, конечно, можно реализовать и самому внутри того же mega. Однако статья не о том, поэтому мы подправим нужную нам функцию DWORD get. Исходную функцию DWORD get. Поэтому файл ccsbcs. Разбираемся с основными WRITE функциями модуля Fat.