Site Loader

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

 Давно вынашивал в планах опробовать работу с SD карточкой, так как записывать большие данные на такой носитель гораздо эффективней и удобней, чем на внешнюю EEPROM. Для работы с внешними дисками в Bascom-AVR существует библиотека AVR-DOS, которая позволяет организовать работу с файлами на флэшке, с присущей Bascom’у простотой. Эту библиотеку то мне и хотелось попробовать запустить, и наконец руки дотянулись до паяльника.
 Так как библиотека AVR-DOS любит когда у микроконтроллера много памяти, чтобы не приперло в ненужный момент, взял микроконтроллер с запасом – ATMega64. Благо у меня их куча, за что спасибо товарищу  Syph4r с 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

Пишем данные на SD карту с помощью AVR-DOS — Как подключить — AVR project.ru

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

 

 

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

 Давно вынашивал в планах опробовать работу с SD карточкой, так как записывать большие данные на такой носитель гораздо эффективней и удобней, чем на внешнюю EEPROM. Для работы с внешними дисками в Bascom-AVR существует библиотека AVR-DOS, которая позволяет организовать работу с файлами на флэшке, с присущей Bascom’у простотой. Эту библиотеку то мне и хотелось попробовать запустить, и наконец руки дотянулись до паяльника.
 Так как библиотека AVR-DOS любит когда у микроконтроллера много памяти, чтобы не приперло в ненужный момент, взял микроконтроллер с запасом – ATMega64. Благо у меня их куча, за что спасибо товарищу  Syph4r с 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

Пишем данные на SD карту с помощью AVR-DOS — Готовые устройства — Каталог статей — Микроконтроллеры

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


 Так как библиотека AVR-DOS любит когда у микроконтроллера много памяти, чтобы не приперло в ненужный момент, взял микроконтроллер с запасом — ATMega64. Благо у меня их куча, за что спасибо товарищу  Syph4r с http://army.xclan.ru/

 Для работы карточки памяти необходимо напряжение 3,3 вольта, максимально допустимый порог 3,6 вольт — иначе сгорит. Поэтому для подключения к микроконтроллеру использована буферная микросхема 74LVC244. Можно конечно и обойтись без буфера — запитать всю схему целиком пониженным напряжением. Но хотелось проверить работу этой микросхемы в деле, а во-вторых возможность подключать плату к пяти вольтовым устройствам еще пригодится.


 Из внешнего повесил на PortB.7 светодиод, иначе без индикации будет скучно. Плата получилась как образец минимализма — кроме разъема для подключения карточки памяти и разъема программатора на плате ничего не предусмотрено. 

 Плата разведена на одностороннем текстолите, с использованием трех перемычек. Если надумаете повторить плату не забудьте о них. На разъеме еще предусмотрены контакты, которые замыкаются когда карта вставлена в разъем, эти контакты тоже использованы — сигнал заводится на PortD.7 (на схеме это не показано)


 Микроконтроллер планируется тактировать от внутреннего RC, поэтому кварца на плате тоже нет, я сразу поставил частоту 8 МГц. При программировании фьюз у ATMega64 нужно помнить что в них есть режим совместимости с ATMega103, его необходимо отключить.  

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


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

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *