Главная » Статьи » Как подключить |
Пишем данные на SD карту с помощью AVR-DOS
Давно вынашивал в планах опробовать работу с SD карточкой, так как записывать большие данные на такой носитель гораздо эффективней и удобней, чем на внешнюю EEPROM. Для работы с внешними дисками в Bascom-AVR существует библиотека AVR-DOS, которая позволяет организовать работу с файлами на флэшке, с присущей Bascom'у простотой. Эту библиотеку то мне и хотелось попробовать запустить, и наконец руки дотянулись до паяльника.
Так как библиотека AVR-DOS любит когда у микроконтроллера много памяти, чтобы не приперло в ненужный момент, взял микроконтроллер с запасом - ATMega64.
Для работы карточки памяти необходимо напряжение 3,3 вольта, максимально допустимый порог 3,6 вольт - иначе сгорит. Поэтому для подключения к микроконтроллеру использована буферная микросхема 74LVC244. Можно конечно и обойтись без буфера - запитать всю схему целиком пониженным напряжением. Но хотелось проверить работу этой микросхемы в деле, а во-вторых возможность подключать плату к пяти вольтовым устройствам еще пригодится.
Для решения вопроса согласования уровней можно прикупить готовый модуль развязки для карточки, например такой :
Моя схема подключения получилась такой:
Из внешнего повесил на PortB.7 светодиод, иначе без индикации будет скучно. Плата получилась как образец минимализма - кроме разъема для подключения карточки памяти и разъема программатора на плате ничего не предусмотрено.
Плата развел сам на одностороннем текстолите, с использованием трех перемычек. Если надумаете повторить плату не забудьте о них. На разъеме еще предусмотрены контакты, которые замыкаются когда карта вставлена в разъем, эти контакты тоже использованы - сигнал заводится на PortD.7 (на схеме это не показано)
Микроконтроллер планируется тактировать от внутреннего RC, поэтому кварца на плате тоже нет, я сразу поставил частоту 8 МГц. При программировании фьюз у ATMega64 нужно помнить что в них есть режим совместимости с ATMega103, его необходимо отключить.
тестовый код работы с картой памяти: $regfile = "m64def.dat"
$crystal = 8000000 $baud = 1200 $hwstack = 128 $swstack = 128 $framesize = 128 Config Portb.7 = Output 'подключаем светодиод Led Alias Portb.7 'подключение библиотеки AVR-DOS $include "Config_MMC.bas" $include "Config_AVR-DOS.BAS" Dim B As Byte B = Initfilesystem(1) 'инициализация флэшки If B <> 0 Then 'если инициализация не прошла Led = 1 'зажигаем светодиод Stop 'и останавливаем программу End If 'если инициализация флэшки прошла успешно продолжаем программу 'объявление переменных Dim P As Byte 'переменная которую будем записывать на флэшку Dim File As String * 10 'имя создаваемого файла Dim Size As Long 'здесь будет хранится размер флэшки Dim Size_str As String * 50 Dim Free As Long 'размер свободной памяти Size = Disksize() 'узнаем объем флэшки в байтах Free = Diskfree() 'узнаем сколько байт свободно Size_str = "Свободно " + Str(free) + " из " + Str(size) + " байт" 'готовим строку File = "log.txt" 'имя и расширение файла который будем создавать на флэшке Open File For Output As #1 'открываем файл Log.txt и записываем в него данные Print #1 , "AVRproject.ru" 'напишем вот такой текст Print #1 , "Запись данных на SD карту с помощью Bascom-AVR!!!" Print #1 , Size_str 'выведем информацию о размере флэшки Print #1 , 'пустая строка Close #1 'основной цикл програмы Do Led = 1 'на время записи зажгем светодиод Open File For Append As #1 'открываем наш файл для записи Print #1 , P 'записываем переменную Close #1 'закрываем файл Incr P 'изменим переменную Waitms 100 Led = 0 'гасим светодиод Wait 1 Loop 'повторяем цикл End
| |
Просмотров: 43370 | Комментарии: 42
| Теги: |
Всего комментариев: 42 | 1 2 » | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
1-30 31-42 | |||||||||||||||||||||||||||
авторизация
рубрики
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |
метки