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

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


 Давно вынашивал в планах опробовать работу с SD карточкой, так как записывать большие данные на такой носитель гораздо эффективней и удобней, чем на внешнюю EEPROM. Для работы с внешними дисками в Bascom-AVR существует библиотека AVR-DOS, которая позволяет организовать работу с файлами на флэшке, с присущей Bascom'у простотой. Эту библиотеку то мне и хотелось попробовать запустить, и наконец руки дотянулись до паяльника.

 Так как библиотека AVR-DOS любит когда у микроконтроллера много памяти, чтобы не приперло в ненужный момент, взял микроконтроллер с запасом - ATMega64. Благо у меня их куча, за что спасибо товарищу  SypH3r с http://army.xclan.ru/
 Для работы карточки памяти необходимо напряжение 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
Просмотров: 26331 | Комментарии: 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
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
01.12.2016 - yorx:
Доброго времени суток, exersizze попробовал Ваш код все равно не работает как на...
Помни об усадке!
30.11.2016 - pchela5:
Автомобильные никакие не лезут?
Помни об усадке!
29.11.2016 - AlekS:
Виктор, спасибо.
С заменой транса в зиму, перестройка не комельфо) Валяет...
Управляем микроконтроллером с ПК по UART
29.11.2016 - exersizze:
Михаил, для работы с инфракрасными датчиками и диодами есть команды RC5SE...
Управляем микроконтроллером с ПК по UART
29.11.2016 - Михаил:
Всем привет.
Подскажите как переменную S передать по инфракрасному каналу...
Помни об усадке!
29.11.2016 - pchela5:
> Если ленту светодиодную порезать и соединить последовательно
Только ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
29.11.2016 - exersizze:
yorx, вывод Q7 ' первой микросхемы соединен с DS второй микросхемы? С...
Помни об усадке!
29.11.2016 - exersizze:
Можно даже без резистора их включать, если на ленте уже стоят. Но если опасаешьс...
Помни об усадке!
28.11.2016 - AlekS:
Да,пла, из абс как-то грубовато идет. (((
Самое главное, наверное и для т...


Лучшие цены на 3D принтеры
успей сделать себе подарок к Новому Году! ;)


Prusa i3

Prusa i3 от 12500 р.



Rostoсk

Rostock от 15000 р.