Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



AVR-DOS

Сообщений 1 страница 28 из 28

1

Привет всем! Возникла задача записывать данные с МК на microSD карту, но чтобы затем можно было прочитать эти данные на ПК (тоесть простоделать .txt файлы на фатовской флэшке)
Сейчас использую Atmega128 и microSD карточку с кодом из примера GPS логгера (http://bascom.at.ua/publ/1-1-0-3)
Вопрос вот в чем, возможно ли уместить  код AVR-DOS в МК с меньшей памятью (например в Atmega32)? Как я понимаю, другого метода, кроме как AVR-DOS нет для записи файлов на карточке пригодных к прочтению на ПК.

0

2

Спасибо! то что надо. Что-то Нод32 ругнулся на ссылку)

0

3

Для dos нужно много озу. а 32 к флэш может и хватить! Если у M128 слишком много ног для тебя, то есть M644 и М1284! Первая очень доступна.

0

4

Mrshilov написал(а):

Ссылка

Это содрано отсюда.

0

5

Привет всем! Пытаюсь записать тексовый файл c Atmega32 на микроСД карту. Файл создается, но пустой. Что я делаю не так, подскажите пожалуйста)

Код:
$regfile = "m32def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 32
$baud = 19200

$include "Config_MMC.bas"
$include "Config_AVR-DOS.BAS"

Print "start program"
Wait 2

Dim B As Byte
Dim Da As String * 12
B = Initfilesystem(1)

Wait 1
Print "1 Point"

If B <> 0 Then                                         
Wait 1
Print "error SD card"                                     
End If

Wait 1
Print "2 Point"

Da = "test.txt"

Open Da For Output As #1
Print #1 , "Test Card";
Close #1

Wait 1
Print "3 Point"

Do

Loop
End

Config_MMC.bas
CONFIG_AVR-DOS.bas

может все дело в настройках в файлах Config_AVR-DOS и Config_MMC ?

Отредактировано nooby (2011-10-02 11:49:38)

0

6

Самое интересное, что если в созданном файле что-нибудь написать, то при открытии файла в коде командой 

Код:
Open Da For Append As #1

текст начинает добавляться. В чем прикол??

0

7

В примере написано:

Код:
Ff = Freefile()                                             ' get a file handle

'With this file handle we refer to a file
Open Fl For Output As #ff                                   ' open fikle for output
'  we need to open a file  before we can use the file commands
'  we open it for OUTPUT, INPUT , APPEND or BINARY
'  In this case we open it for OUTPUT because we want to write to the file.
'  If the file existed, the file would be overwritten.
Print #ff , S                                               ' print some data
Print #ff , S
Print #ff , S
Print #ff , "A constant" ; S
Testsb Ff
Close #ff

Канал #1 скорее всего занят под COM1.

Отредактировано alex_r61 (2011-10-02 12:18:55)

0

8

Канал #1 свободен я так же как в примере тоже сделал - через функцию freefile() одно и тоже(. Пробовал на 3-х разных флешках microSD.

0

9

А у меня на Mega64 без проблем,  на двух разных картах пробовал.

0

10

Мистика блин) Алекс, ты можешь попробовать с моими Config_MMC.bas и CONFIG_AVR-DOS.bas Может дело в них?

0

11

Похоже проблема с CONFIG_AVR-DOS.bas.
А что мешает перейти на M644, корпус тот же.

Отредактировано alex_r61 (2011-10-03 22:35:07)

0

12

Предостерегу от использования карточек. Как то я тоже хотел использовать карточку вместо озу, но опыт показал, что если часто писать информацию на нее, то очень скоро получаем битые биты (прошу прощения за каламбур). А так как AVR DOS не умеет отслеживать эти биты, то получается конфуз. В РС запись на карты весьма сложен. Там инфа перемещается по ней равномерно, драйвера стараются распределять использование пространства карты. В нашем случае это не возможно. Для примера возьмите карту и начните тупо писать в нее по определенному адресу (DOS это позволяет) одновременно подсчитывая количество циклов. Увидете, сколько она выдержит.

0

13

В качестве ОЗУ удобнее использовать FRAM память.
И зачем всё время писать по одним адресам?
Циклов записи у FLASH карты не менее 10000.
В системе сбора информации через определённые промежутки времени
создаётся новый файл и с него информация только читается,
а на карту в 1Г хватит не один год писать.
А накапливать инфу для записи можно в ОЗУ или FRAM.

0

14

Спустым файлом наконец-то разаобрался, надо было просто размер стэков увеличить! Дилетанский вопрос - можно ли на карточке средствами AVR-DOS создать папку??

0

15

MkDir

Создает каталог в текущей директории.

MkDIR (strDirectoryName)

+1

16

Уважаемый nooby у меня та же самая проблема подскажите где и какой стек надо откорректировать чтоб писать на микро SD  с помощью Atmega32. Вы бы не могли мне выслать исходник или где мы откорректировать. Спасибо за ответ :)

0

17

я не пользовался avr-dos
а стеки, скорее всего, эти:
$hwstack = 40                     
$swstack = 40                     
$framesize = 40                   

я тоже в каком-то проекте намучался - не создается массив!
увеличил до 40 - пошло

Но потом, указал эти размеры для проекта на tiny2313 - сообщение об ошибке
Умельшил до предлагаемых - заработало

0

18

Не понимаю один момент. В лицензии, в комплекте идет какой-то AVR-DOS, а на сайте у них он же продается отдельной библиотекой, что же тогда они продают и какие ограничения есть в штатном виде?

И ещё, просто "$include" + файл не подключает библиотеку, выдается ошибка об его отсутствия, но когда жестко путь прописываю, то ошибок при сборке нет - это нормально?

Отредактировано RDW (2012-01-26 12:49:21)

0

19

Стэки, те что указал Александр Д. Я увеличил до 64 для Atmega32A.

RDW, на сайте продают вроде как лицензию для коммерческого использования. На счет ошибки, скорее всего прога криво встала - не прописались пути программы в реестре. Попробуй переустановить

0

20

Может потому, что это винда 7 64-бит (по тому как переустановка не помогает)?

0

21

Да странно конечно победил проблему вот этим изменил параметр Const Csepfathandle=0   в CONFIG_AVR-DOS.bas  на Const Csepfathandle = 1 и все заработало странно конечно. А стеки у меня такие
$hwstack = 40
$swstack=16
$framesize=32

Хотя что так не писал что так но при изменение параметра который я указал выше все заработала.
Спасибо за ответ

0

22

Народ помогите с кодом, работать с SD картой читать и писать в TXT файл Построчно с адреом строки желательно ))) кристал attiny2313

Отредактировано uh9cae (2013-04-03 22:31:01)

0

23

Вот интересная ссылка. Но это не Bascom

0

24

Нужна простая запись в файл лога. Нет ли урезанной AVR-DOS, без буферов чтения, поддержки FAT32 и т.д. ??? Главное что бы памяти кушала как можно меньше.

0

25

IgorL написал(а):

Нужна простая запись в файл лога. Нет ли урезанной AVR-DOS, без буферов чтения, поддержки FAT32 и т.д. ??? Главное что бы памяти кушала как можно меньше.

Может тогда вообще без AVR-DOS обойтись, писать напрямую в байты памяти? Где то код на форуме был, ищите по "AVR-DOS" или "SD-card".

0

26

Думаю лучше и проще сделать запись в файл, который лежит в корне. Разобраться с 1 файлом не так уж и сложно. Можно правда и тут извращнуться (упростить), скажем создать заранее файл-болванку с большим объёмом (сразу после форматирования). Да, понадобится пред подготовка карты перед использованием, зато потом проще с ней работать в рамках стандартов ПиСи..

0

27

На всякий случай выложу информацию как работать с кириллицей в файловой системе в AVR-DOS:

При чтении названия файлов и папок через DIR нужно найти коды ASCII, которые больше 126 и тогда нужно 6 бит включить единицу.
Если надо войти в папку или открыть кириллический файл, необходимо 6 бит убрать в кириллических буквах.

Может кто подскажет, как уменьшить ограничение длины в названии папок и файлов? (Чтоб не ПРОГРА~1, а ПРОГРАММЫ)

0

28

Стандарт DOS имеет 8.3 (имя+расширение), в винде далеко уже ушли от стандартов DOS, т.ч. даже не рекомендую туда лезть, памяти не хватит и производительности.

0