Пишем данные на SD карту с помощью AVR-DOS

 Давно вынашивал в планах опробовать работу с SD карточкой, так как записывать большие данные на такой носитель гораздо эффективней и удобней, чем на внешнюю EEPROM. Для работы с внешними дисками в Bascom-AVR существует библиотека AVR-DOS, которая позволяет организовать работу с файлами на флэшке, с присущей Bascom’у простотой. Эту библиотеку то мне и хотелось попробовать запустить, и наконец руки дотянулись до паяльника.
 Так как библиотека AVR-DOS любит когда у микроконтроллера много памяти, чтобы не приперло в ненужный момент, взял микроконтроллер с запасом – ATMega64. Благо у меня их куча, за что спасибо товарищу  SypH3r с http://army.xclan.ru/ Для работы карточки памяти необходимо напряжение 3,3 вольта, максимально допустимый порог 3,6 вольт – иначе сгорит. Поэтому для подключения к микроконтроллеру использована буферная микросхема 74LCV244. Можно конечно и обойтись без буфера – запитать всю схему целиком пониженным напряжением. Но хотелось проверить работу этой микросхемы в деле, а во-вторых возможность подключать плату к пяти вольтовым устройствам еще пригодится.

схема подключения получилась следующая:

 Из внешнего повесил на 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

 

 Результат работы программы ниже, на флэшке создается текстовый файл с именем LOG.TXT и в него записывается все то что мы отправляем командой Print

 Исходник хорошо прокомментирован, поэтому все максимально доступно для понимания, а остальные команды поддерживающие AVR-DOS описаны в хэлпе к Bascom’у.

 Печатная плата (Dip Trace)

 Исходники с библиотекой AVR-DOS


Взято с: avrproject.ru


Категория: AVR
Метки:

Написать коментарий

*
= 3 + 5

Добавить изображение

Последние статьи