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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Диспетчер процедур, кто как делал или есть наработки?


Диспетчер процедур, кто как делал или есть наработки?

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

1

Итак, проект делаю для себя, всё в принципе готово и работает. Хочется оптимизации...
Для чего? - убрать "бестолковые" команды wiat и прочее.
Реализовал у себя на Timer0 (любой в принципе подойдёт) несколько счётчиков и по переполнению которых взводится флаг обновления процедуры.

Например, LCD обновляется 2 раза в секунду, датчики и исполнительные механизмы (по разному) по разу в секунду. Джойстик опрашивается 60 раз в секунду.

Кто как делал, нужны любые советы.

0

2

RTOS нужна?
Операционная Система  для  Bascom AVR существует ???
https://www.mcselec.com/index.php?optio … ;Itemid=57

0

3

Нет, RTOS не нужно.
Есть идеи реализации на уровне:
Do
а вот здесь куча процедур и управляет ими таймер по счётчику???
Loop

0

4

wiat о Господи помилуй!
Так сделай нормальное тактирование 1мс, 1с у меня нет не одной софтины без таймера 1мс, там отмеряются нужные интервалы на все нужны.
Для того что бы не вешать главный цикл вложенных циклов стараюсь избегать, то есть выполнение через главный цикл тогда ресурсы распределяются скажем

Do

do
длительная операция
loop until frs =1

Loop

А вот так делаю я

Do

If FRS = 0 then
длительная операция
end if

loop

Правда такое требует нового подхода в плане использования переменных и обращения к данным нежели повесить всё выполнить в процедуре что то и дальше. У меня все программы реалтаймовые, ни когда не теряют управления.

Отредактировано RadioHAM-433 (2018-07-20 19:48:15)

0

5

бАлин... а я чё тогда сверху написал?  :D
Делаем на любом таймере счётчикИ событий с разнымИ временными интервалами. И по срабатыванию счётчика выставляем ФЛАГ , чёто типа Need_Lcd_Update (например) и в главном цикле отрабатываем.
*************************************************************
Я так понял, что "подход" к программированию в Этом случае нужно будет в корне изменить, линейное ветвление ужО нИкатит, я правильно мыслю???  :writing:

0

6

Если нужно линейное программирование то необходимо использовать RTOS с вытесняющей многозадачностью.

0

7

-NMi- написал(а):

линейное ветвление ужО нИкатит

Отчего ?
Флаги таким образом проверять - милое дело... ;)

0

8

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

милое дело...

Напиши моргалку на 10 светодиодов, чтобы моргали абсолютно НЕЗАВИСИМО, тогда я тебе поверю.
Можешь в протеус оформить и сюды выложить для проверки.

0

9

Причём тут линейное программирование, просто к данным не обращаться пока функция работает, не чего там особо менять не надо, просто надо немного мыслить не так линейно а немного думать об оптимизации сразу.
Абсолютно независимо моргали в чём проблема? 10 таймеров со своими интервалами в чём проблема?
Я не лихой прогер но я логически могу подхожу в реализации задачи и могу на перёд шаги планировать, к примеру я даже для стабилизатора напряжения с 4-5 АЦП разбиваю опрос на шаги, то есть тактирую с 5кГц разбиваю на 5 шагов, 4 АЦП на 5-м шагу алгоритм. Я всегда без wait обходился. Или тактирование из прерывания а по завершению обработка через главный цикл с 3 переменных с флагами, по завершение работы с прерываниями обработать с главного цикла, пока с главного цикла не обработано с прерываний данные не трогать, как с прерывания всё закончилось больше не трогать пока с главного цикла не обработается.
Я всегда ресурсы распределяю и функции UART, вывод на дисплей это кошмар, их нельзя разорвать, точнее даже UART можно отправлять по байту за та такт, тогда не будет подвисания, передачу данных тока ставлю на так (синхронную) что ни как уже не сказывается на работе программы.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Диспетчер процедур, кто как делал или есть наработки?