Малаток-меню
Авторизация

Наш опрос
Как Вы попали на сайт?
Всего ответов: 88
Мини-чат
200
Статистика


Наш линк
Malatok.at.ua
Полезные ссылки
Это может быть интересно
[
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Stalker753, Викр, Дмытрохан  
Форум » РАДИОТЕХНИКА » Полезные устройства » Пишем данные на SD карту с помощью AVR-DOS
Пишем данные на SD карту с помощью AVR-DOS
incubus Дата: Суббота, 14.12.2013, 21:56 | Сообщение # 1
Почетный друг сайта
Группа: Модераторы
Сообщений: 190
Награды: 4
Репутация: 200
Замечания: 0%
Статус: Офлайн


 
Давно вынашивал в планах опробовать работу с 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


С дураком спорить бесполезно!
 
SapphireLion Дата: Среда, 25.05.2016, 10:02 | Сообщение # 2
Группа: Гости





Вопрос. У меня #1занят под UART1. Какой порт тогда использовать и как его объявить?
 
Форум » РАДИОТЕХНИКА » Полезные устройства » Пишем данные на SD карту с помощью AVR-DOS
  • Страница 1 из 1
  • 1
Поиск:
Новый ответ
Имя:
Текст сообщения:
Опции сообщения:
Код безопасности:
Яндекс.Метрика
24 log 24 LOG statistick
счетчик посещений
Если вы видите это,
то ваш браузер устарел
и не поддерживает технологий
CSS 3.0