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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Не работают как надо функции AVR-DOS


Не работают как надо функции AVR-DOS

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

1

Начал работать с AVR-DOS и сходу натолкнулся на неработающие как надо функции.
Bascom 2.0.8.2
AVR-DOS 6.0
ATmega2560

Создается некий девайс с экраном и возможностью чтения файлов с SD-карточки. Карту читает, список файлов формирует. Но:

1. Вычисление свободного пространства на SD-карточке функцией Diskfree() - просто жутко тормозит весь процесс. То есть именно на ней программа зависает секунд на 100-120, после чего продолжает работать. Стоит ее убрать - все просто летает. Но, как понимаете, важнее знать оставшееся пустое место на карте, чем просто ее объем.

2. Вычислить дату создания файла - ни фунция Filedate(), ни Filedatetime() не выдают результата. Хотя если на то же место поставить Filelen() и Filetime() - спокойно выдают длину и время создания файла. А вот дату - ни в какую.

Кто-то сталкивался? В чем может быть причина?

Отредактировано shuffleshu (2019-08-08 01:09:29)

0

2

Отвечаю на второй вопрос сам себе.
Так как я использую дисплей Nextion HMI, он не воспринимает символ-разделитель "\" в дате создания файла как нормальный ASCII и поэтому не печатает нормально дату. Пришлось вставлять костыли в программу, скидывая сначала дату от Filedate() в буфер и замещая этот символ на что-то более удобоваримое.

0

3

о как

0

4

Нда... Чем дальше в лес - тем толще партизаны.
Не могу использовать одновременно AVR-DOS и CONFIG CLOCK из-за одинаковых меток DATETIME в обеих библиотеках. Нужно сохранять файл с текущими датой и временем, а не 01-01-01 01:00:00. Написано было в примерах "используйте для выставления текущих даты и времени CONFIG CLOCK". Видимо это было давно написано, после чего в AVR-DOS появилась функция DATETIME и все перестало работать.
И вообще - это одна из самых глючных, самых плохо-документированных библиотек.

0

5

странно. Вроде в какой-то из версий я это всё использовал. На выходных поищу

0

6

Александр Д. написал(а):

странно. Вроде в какой-то из версий я это всё использовал. На выходных поищу


Вот начинаю думать, что в новых версиях Баском что-то поменяли так, что библиотека перестала работать как надо.
Бьюсь который день с записью на диск. Записать пару байт - это без проблем. Но если надо выгрузить порядка 260 килобайт, то все - программа улетает куда угодно на абсолютно случайные адреса и подпрограммы.
Открываю файл как Binary, читаю байт из внешней Eeprom по i2c и тут же пишу командой Put на карточку. Один раз из десяти все пишется нормально, остальные - от перезагрузки до зависания...
Размеры стеков менял, буферизацию включал-отключал, скорость SPI менял. Пока не соображу что еще сделать.
Загрузка при этом работает нормально, хоть сколько килобайт подряд загружай.

0

7

Скорее всего чехорда с распределением памяти. Неправильно резервируете классические области:

Код:
$hwstack = 8
$swstack = 16
$framesize = 16

0

8

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

Скорее всего чехорда с распределением памяти. Неправильно резервируете классические области:

Все три по 128, что более чем достаточно для любой библиотеки.

0

9

Если у вас лицензия, то пишите о проблеме на офф форум.

ps: на сколько я помню, с avr-dos-ом была только одна проблема, нельзя было работать с более одной картой (видимо народ хотел копировать их, но никто не догадался для таких целей просто поставить два МК :D ).

Отредактировано RDW (2019-08-08 17:37:11)

0

10

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

Все три по 128, что более чем достаточно для любой библиотеки.

ваша неправда: у меня ожило после 150

Код:
$hwstack = 190                                              '  
$swstack = 190                                              '
$framesize = 190                                            '


проект реально работающий: установщик SMD компонентов. Правда, с датой я там не работаю,поэтому строки

Код:
'Config Clock = Soft
'Config Date = Dmy , Separator = .

отключены

Отредактировано Александр Д. (2019-08-08 17:59:43)

0

11

Александр Д. написал(а):

ваша неправда: у меня ожило после 150

проект реально работающий: установщик SMD компонентов. Правда, с датой я там не работаю,поэтому строки

отключены

Отредактировано Александр Д. (Сегодня 17:59:43)


Ставил 256, запись все так же работает нестабильно.
С датой более-менее разобрался, невнимательно читал хелп к библиотеке Datatime. Нужно было создать пустую подпрограмму Getdatetime, раз у меня Config Clock = User.
Часы использую встроенные в Nextion, мне еще одни на Атмеге не нужны. Надо было просто переносить текущие дату и время при создании нового файла.

0

12

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

Если у вас лицензия, то пишите о проблеме на офф форум.

ps: на сколько я помню, с avr-dos-ом была только одна проблема, нельзя было работать с более одной картой (видимо народ хотел копировать их, но никто не догадался для таких целей просто поставить два МК  ).

Отредактировано RDW (Сегодня 17:37:11)


С написанием на английском имеются проблемы, потому и не пишу туда )

0

Похожие темы


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Не работают как надо функции AVR-DOS