Home / Posts / Электроника / AVR и sd-карта. Библиотека avr-dos /


AVR и sd-карта. Библиотека avr-dos



Речь пойдет о том, как записывать и читать данные с sd карты (флешки), используя библиотеку avr-dos. Это может быть полезно при разработке устройств на микроконтроллерах AVR, которые должны будут работать с sd-картой - всевозможные логгеры температуры, и прочих параметров.

Мне данная возможность пригодилась, когда я делал прибор для сигнализации. Устройство должно было читать и отображать на дисплее содержимое текстовых файлов, а также создавать файл при сработке.

Я использовал микроконтроллер Atmega32, у которого сначала не хватило памяти для работы библиотеки, но после некоторых настроек все заработало.

В конкретном случае имеется в виду среда Bascom Avr.

Допустим, мы объявили контролер.

 

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 100
$swstack = 100
$framesize = 100

 

Далее, следует объявить библиотеки Avr-dos и инициализировать файловую систему.

Порт, куда подключается флешка, указывается в файле Config_MMC.bas.

При успешной инициализации, на дисплей (допустим, мы его уже подключили и инициализировали), выводится соответствующая надпись:

 

$include "Config_MMC.bas"
$include "Config_AVR-DOS.BAS"
If Initfilesystem(1) <> 0 Then
Lcd "FILE SYSTEM ERROR!"
Stop
End If
Lcd "Ok, card"

 

Теперь запишем файл config.txt на карту.

Команда Open открывает файл или создает его (если такового нет). Команда Print записывает строку со значением K. Таким образом, можно записывать переменные в строки файла.

 

Open "config.txt" For Output As #1
Print #1 , K
Print #1 , "123"
Close #1

 

Затем считываем информацию. Здесь файл config.txt открывается для чтения (Input), и в переменную K считывается первая строка из файла.

 

Open "config.txt" For Input As #1
Input #1 , K
Input #1 , str
Close #1

 

Также можно узнать, сколько места на карте всего, и сколько осталось:

 

Size = Disksize()         
Free = Diskfree()

 

Чтобы это все уместилось в такой микроконтроллер как Atmega32 (помимо прочего программного кода), возможно придется сконфигурировать файл config_AVR-DOS.bas, а именно строку:

 

' Count of file-handles, each file-handle needs 524 Bytes of SRAM
Const Cfilehandles = 1                                      ' [default = 2]

 

В ней по умолчанию Cfilehandles = 2.

 

Теперь настало время разобраться с подключением sd-карты с микроконтроллеру. Ниже для примера показана распиновка обычной sd карты.

Надо заметить, что питается она от 3.3 вольт - поэтому, либо следует питать флешку от дополнительного стабилизатора, и согласовывать уровни с помощью резисторов, либо питать и контроллер и флешку одним напряжением 3.3 в.

В моем случае флешка питалась от двух последовательно соединенных диодов, после которых напряжение (сглаживаемое небольшим электролитом) как раз и было в пределах допустимого. Это самый простой, но небезопасный способ - карта должна быть вставлена в разъем до включения устройства.

В файле Config_MMC.bas имеются следующие строки:

 

' --------- Start of Section for Soft-SPI --------------------------------------
   ' Chip Select Pin  => Pin 1 of MMC/SD
   Config Pinb.4 = Output
   Mmc_cs Alias Portb.4
   Set Mmc_cs
   ' MOSI - Pin  => Pin 2 of MMC/SD
   Config Pinb.5 = Output
   Set Pinb.5
   Mmc_portmosi Alias Portb
   Bmmc_mosi Alias 2
   ' MISO - Pin  => Pin 7 of MMC/SD
   Config Pinb.6 = Input
   Mmc_portmiso Alias Pinb
   Bmmc_miso Alias 3
   ' SCK - Pin  => Pin 5 of MMC/SD
   Config Pinb.7 = Output
   Set Pinb.7
   Mmc_portsck Alias Portb
   Bmmc_sck Alias 1
' --------- End of Section for Soft-SPI ----------------------------------------

 

Как видно, здесь для каждого вывода карты конфигурируется один из выводов порта B контроллера.

 

В архиве лежат необходимые файлы библиотеки.

 

 

 

 


,






Еще статьи по теме


AVR запись и работа с eeprom
AVR спящий режим
Маркерная доска своими руками
Программатор для PIC, AVR и микросхем памяти
программатор apu-2
AVR DIP




Свежие статьи


Часы на газоразрядных индикаторах ИН-8
Инфракрасный барьер своими руками
Светодиодное освещение - продолжение эволюции
Часы на газоразрядных индикаторах ИН-12 (Nixie Clock)
Светодиодное освещение своими руками



Главная



Комментарии (0)











Мужской Проект

Подписка


Поиск