Главная » Статьи » Как подключить

Пишем данные на 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.= Output        'подключаем светодиод
Led Alias Portb.7

'подключение библиотеки AVR-DOS
$include "Config_MMC.bas"
$include "Config_AVR-DOS.BAS"

Dim B As Byte

= 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 #, "AVRproject.ru"    'напишем вот такой текст
 Print #, "Запись данных на SD карту с помощью Bascom-AVR!!!" 
 Print #, Size_str           'выведем информацию о размере флэшки
 Print #,                    
'пустая строка
 Close #1

'основной цикл програмы

Do

Led = 1                        'на время записи зажгем светодиод
 Open File For Append As #1    'открываем наш файл для записи
 Print #, P                  'записываем переменную
 Close #1                      'закрываем файл

Incr P                         'изменим переменную

Waitms 100
Led = 0                        'гасим светодиод

Wait 1

Loop                           'повторяем цикл


End


 

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

 

 

 


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

 

 

Категория: Как подключить | Добавлено: 28.10.2013
Просмотров: 42708 | Комментарии: 42 | Теги: AVR-DOS | Рейтинг: 4.9/12
Всего комментариев: 421 2 »
0  
42 exersizze   (16.05.2016 09:08) [Материал]
Это номер виртуального порта куда записываем данные. Номер может быть любой, но одинаковый для работы с одной картой.

41 Toddy123   (15.05.2016 13:03) [Материал]
добрый день! у меня вопрос что это за символ---> #1 ? это номер блока?

40 Toddy123   (10.05.2016 05:53) [Материал]
Привет! Вот нашел на просторах интернета может кому и пригодится) http://dr-spear.com/page.php?id=120

39 Dmitriy   (02.06.2015 17:34) [Материал]
Вот, пожалуйста, правая не работает. https://drive.google.com/file/d/0B4u67oh2vLxOSFlwbFpCMEljXzA/view?usp=sharing

38 kip96   (01.06.2015 20:41) [Материал]
фото карт в студию, или хотя бы всё-всё что на них написано.

37 Dmitriy   (01.06.2015 16:36) [Материал]
Использую микроSD карты внешне абсолютно одинаковые, через адаптер, достоверно исправные, на компьютере файлы пишутся и читаются, Но...В данном устройстве работают на ура две из них 512МБ и 2ГГб, третья 2ГГб не определяется, я ее и форматировал по всякому и размер кластера изменял, не хочет и все:)Те, которые работают не имеют надписи производителя. Которая не работает, зовется Кингстон.

0  
36 exersizze   (31.05.2015 18:17) [Материал]
О как! А внешне похожи?  Имею ввиду контактные площадки на обоих флешках. Может в разъем не всеми площадками дотягивается.

35 Dmitriy   (31.05.2015 10:08) [Материал]
Спасибо, разобрался, пришлось собрать второе устройство:), результат тот же самый, не видит флешку, ну думаю дело не в устройстве.Нашел у знакомых древнюю карточку на 512 Мб, заработало в двух устройствах. А потом еще одну нашел 2ГГб, тоже работает. Итог, две одинаковые влешки по 2ГГб, только разных производителей, одна работает, другая нет(обе исправны), не работает Кингстон, на другой нет названия производителя, во как...:) Делаю электронный самописец(логгер) давления воды или другого технологического параметра, как закончу и протестирую выложу весь материал.

0  
34 exersizze   (30.05.2015 21:26) [Материал]
На схеме нога D7 и не используется, на B7 сидит светодиод. Подсказать что-то конкретное сложно, проверьте правильность подключения, фьюзы.

33 Dmitriy   (28.05.2015 22:33) [Материал]
Подскажите пожалуйста, собрал устройство, только на Меге 128, файлы компиллируются, но не определяется флешка, где может быть ошибка? Может это быть из за того, что я не подключил порт D7, он просто висит в воздухе, так и не нашел в исходнике, где он и что делает :)

32 vladh   (21.11.2014 15:26) [Материал]
Грабли были с карточкой. У меня неправильная была модель карточки. И я почему то думал, что текстовый файл с которым работает карточка должен создаваться и находиться в той же папке, что и основные файлы.

0  
31 exersizze   (17.11.2014 20:51) [Материал]
Заработало в симуляторе? Если да, то где были грабли?

30 vladh   (17.11.2014 09:57) [Материал]
В выходные повозился и все заработало.

0  
29 exersizze   (14.11.2014 14:30) [Материал]
Напрямую в комментариях прицеплять файлы к сожалению нельзя (выделенное место на сервере очень ограничено), можно закачать на файлообменник и кинуть сюда ссылку.

28 vladh   (13.11.2014 09:09) [Материал]
Первый раз на этом сайте. Очень много интересного и смотрится все хорошо.
Спасибо за пример. Я сейчас занимаюсь подобной задачей. На основании Вашего примера сделал в Протеусе модель. Запустил её но она не иництализирует карту, уходит в stop. Хотел прицепить файлы этого примера, но не не знаю как это здесь сделать.

27 vakulyuk   (07.10.2014 12:28) [Материал]
Exersizze, Спасибо, буду пробовать :)

0  
26 exersizze   (07.10.2014 09:31) [Материал]
vakulyuk, можно. Если резисторы подобраны в делителе правильно, работать будет не хуже чем с буфером.

25 шанти   (02.07.2014 23:05) [Материал]
Подскажите как настроить spi для работы с lcd nokia3310 и ммс картой в одном проекте?

24 Gordon_shumway   (27.04.2014 20:17) [Материал]
Уважаемые знатоки, уважаемый автор !
А пробовал кто-нибудь по вышеуказанным рекомендациям запустить схему на Меге32 ?
У меня стопорится на инициализации карты памяти. Инициализация не проходит. Может какие тонкости есть ?
Спасибо !

23 PaScaL01   (02.03.2014 21:09) [Материал]
В схеме допущена ошибка, 12 вывод контроллера должен быть подключен не к 14, а к 13 ноге 74LVC244.
_________________________
Спасибо, поправил. admin

22 81Slim   (23.01.2014 00:51) [Материал]
exersizze, cпасибо, в принципе так и предполагал. Буду делать и консультироваться, если нет возражений...Осваиваю BAS...

21 exersizze   (22.01.2014 23:56) [Материал]
Преобразователь 74LVC244 также нужно будет подключить к ножкам аппаратного интерфейса SPI, взамен радиомодуля NRF24L01 с этой схемы http://avrproject.ru/log20/log20.png
ну а дальше переписать немного код логгера, используя примеры из этой статьи

20 81Slim   (22.01.2014 12:29) [Материал]
Классная штука! Обзавелся всем необходимым, но посоветуйте, пожалуйста, как прикрутить ее к логгеру давления и температуры вместо 24LC08?

19 exersizze   (30.11.2013 11:44) [Материал]
301992 должно работать, они схожи с atmega32. pchela5 ниже привел пример конфигурации avrdos для нее. 
http://avrproject.ru/publ....ent3106

18 301992   (30.11.2013 03:04) [Материал]
А с мегой 325 работает?

17 AlekS   (31.10.2013 19:51) [Материал]
Варианта 2, старые матеря (XT, Томато) и у наших друзей http://www.ebay.com/sch/i.html?_sacat=0&_from=R40&_nkw=74LCV244&rt=nc&_pppn=r1&LH_FS=1
*radan* - У меня большое подозрение на чтение фата или его копию , иногда в файле все 2F .

16 sany2   (31.10.2013 18:03) [Материал]
Scorpushka -аналогов полно:забейте в поисковик OCTAL BUFFERS AND LINE DRIVERS WITH 3-STATE.Не знаю-но мне кажется что можно и к155ла3 поставить

15 Scorpushka   (31.10.2013 17:25) [Материал]
где выковырять 74LCV244 или подскажите его аналог. все чаще и чаще не могу повторить схемы из за необходимости преобразования уровней. спасибо

+2   Спам
14 radan   (31.10.2013 01:12) [Материал]
Эта библиотека понимает только короткие имена - 8 символов на имя, точка и 3 символа на расширение - формат ДОС.
Также ограничение на количество файлов в каталоге - 512.
Столкнулся с одной проблемой и пока решил в лоб.
Написан синтезатор светоэффектов, программа на ПК, затем на флешку.
Если стереть на флешке какой-то файл, а потом дописать новые - на дописанных происходит сбой... - неверное считывание.
Поэтому перед сменой эффектов на карте я её предварительно форматирую.
Наверное что-то не допилили в библиотеке, хотя простота в использовании подкупает.
Yужно бы попробовать вот эту - http://www.mcselec.com/index.php?option=com_content&task=view&id=291&Itemid=57

13 kip96   (30.10.2013 21:09) [Материал]
Спасибо за статью! Со звуком, конечно интересно. Но плеер и купить можно за копейки, а вот "озвучиловку" интересно. Например голосом озвучивать- "Превышение температуры" или при срабатывании датчика движения "Добро пожаловать" или "ФАС"( если собака в доме охраняет) :-)

1-30 31-42
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






авторизация
Логин:
Пароль: