Пишем данные на 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
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
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, его необходимо отключить.
тестовый код работы с картой памяти:
$crystal = 8000000
$baud = 1200
$hwstack = 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
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
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’у.