Обсуждаем контроллеры компании Atmel.
Ответить

Re: Нестабильность из-за задержек

Вт апр 20, 2021 14:08:14

Были бы макросы чуть гибче (или я чуть умней :oops: :))) )... применение метода стало бы ещё проще - убрались бы имена потока как минимум из задержек и завершения, убрались бы номера задержек... и задержки бы стали ровно как стандартный встроенный делай - только с одной цифрой = время задержки. ну, впринципе и так получилось не сильно сложно...
Вот, ещё примеры - задержка внутри цикла, моргушки с условием и без, обработка долгого кода с понижением его приоритета...
код постарался по максимуму снабдить комментариями.
Вложения
1.cof.zip
(1.45 KiB) Скачиваний: 314
8kn-8led.zip
(17.74 KiB) Скачиваний: 306
2021-04-20_15-35-49.png
(29.8 KiB) Скачиваний: 652

Re: Нестабильность из-за задержек

Вт апр 20, 2021 14:32:48

Прочитал все страницы и не понял, что тут за алгоритм выдумывается? Какая задача поставлена? Просто стало любопытно... Если прочитать первый пост ТС, то алгоритм выходит проще простого. Но так как дискуссия на 5 страниц – подозреваю что что-то делается в дополнении к поставленной задачи ТС. Или я ошибаюсь?
Не смотрел алгоритм ТС но из его первого поста не понятно, могут ли быть нажаты две кнопки одновременно в одной группе и как должен отработать алгоритм – включить оба выхода соответствующим нажатым кнопкам или выбрать какой-то приоритет между этими кнопками?
И ещё, на порт РD подключаются кнопки с фиксацией или без фиксации?

ЗЫ. Я так понимаю ТС уже всё для себя решил и тема теперь живёт по инерции – верно?

Re: Нестабильность из-за задержек

Вт апр 20, 2021 14:37:54

Самсусамыч, Привет!
Да, первоначально вопрос стоял (в переводе): почему программные задержки в одной части кода мешают работе другой части кода и что нужно сделать, чтобы не мешали...
этот вопрос породил небольшое противостояние на тему многозадачности, который почему-то перешел с темы многозадачности на тему опроса кнопок...
ПС кнопки без фиксации,
если я правильно понял, то кроме поставленного вопроса алгоритм Sergbernа, его полностью устраивал.
Последний раз редактировалось Ivanoff-iv Вт апр 20, 2021 14:42:18, всего редактировалось 1 раз.

Re: Нестабильность из-за задержек

Вт апр 20, 2021 14:42:23

Обсуждение касается и вопросов ТС, и живёт своей жизнью. Лично я учился в том числе и на подобных обсуждениях. Народ предлагает свои способы решения задач, обсуждает достоинства и недостатки, обмениваются опытом. Порой в подобных обсуждениях можно найти решения каких то своих проблем. В том числе и достаточно обширных, необязательно локальных.

Добавлено after 2 minutes 14 seconds:
Ivanoff-iv, опрос кнопок предполагает обработку дребезга контактов. А это таймеры, ну и так далее. Так что эта тема не просто близка, она напрямую связана со псевдопараллельностью процессов.

Re: Нестабильность из-за задержек

Вт апр 20, 2021 14:50:00

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

Re: Нестабильность из-за задержек

Вт апр 20, 2021 15:07:55

Привет!!! :beer:
кнопки без фиксации

Раз кнопки бес фиксации, то получается пока удерживаешь кнопку нажатой – соответствующий выход имеет высокий уровень? А как отпустил кнопку – на выходе появился низкий уровень?
Как с вопросом по нажатию двух кнопок в одной группе? Как должно работать?

ЗЫ. Мне тоже нравится светиками помигать… :)

Добавлено after 2 minutes 28 seconds:
Порой в подобных обсуждениях можно найти решения каких то своих проблем.

Проблем нет… просто задача сверх простая, потому можно и мне поучаствовать… :))

Re: Нестабильность из-за задержек

Вт апр 20, 2021 15:09:48

А вы сами себе задачу поставьте. Необязательно смотреть в задачу ТС-а. Представьте, что вы делаете автомат световых эффектов. С управлением от кнопок. Какой алгоритм захотите, такой и будет.

Re: Нестабильность из-за задержек

Вт апр 20, 2021 15:31:36

А вы сами себе задачу поставьте.

Мне так не интересно… :)

Re: Нестабильность из-за задержек

Вт апр 20, 2021 16:12:13

думаю, что ТС не думал о нжатии сразу нескольких кнопок...
да и дело тут уже не в алгоритме мигания светодиодами, а впринципе... в принципе построения кода...
я уже отклонился от линии автора... (добавил ещё кнопок и светодиодов..., но те что стоят изначально - работают по алгоритму автора).
кстати Самсусамыч, у меня был подобный распределённый диспетчер и для АБ... не помню уже показывал ли я его тебе, если нет - поищу...

Re: Нестабильность из-за задержек

Вт апр 20, 2021 16:26:52

кстати Самсусамыч, у меня был подобный распределённый диспетчер и для АБ...

Спасибо большое, но не ищи… :beer: тут тоже есть диспетчеры для АВ… http://www.forum.getchip.net/viewforum. ... 6e68ccd6bd :)

Добавлено after 7 minutes 17 seconds:
думаю, что ТС не думал о нжатии сразу нескольких кнопок...

А как у ТС сделан алгоритм выполнения работы выходов одной группы? По принципу однорядных кнопок П2К (одну нажал, все остальные отключились)? Или ещё как-то?

Re: Нестабильность из-за задержек

Вт апр 20, 2021 16:38:25

4 подряд... опрос следующей кнопки, если она нажата - затирает состояние, оставленное предыдущими итерациями и выставляет на 4 вывода порта свой паттерн. паттерн прост горит тьлько тот светодиод из 4х, какая кнопка нажата. паттерн выставляется побитной записью в порт.
таких конструкций 2, одна работает на битах 0-3, вторая на битах 4-7.

Добавлено after 1 minute 48 seconds:
т.е. да как П2К, но при одновреме6ом нажатии горит только втарший

Re: Нестабильность из-за задержек

Вт апр 20, 2021 16:42:03

Ага понял… :beer: пришла мысль по данному поводу… попробую реализовать и посмотреть, что получится. :write:

Re: Нестабильность из-за задержек

Вт апр 20, 2021 18:03:28

уточню: кнопки без механической фиксации, программно: 1 кнопка - триггер, и 2 группы по 4 кнопки типа "кто последний тот и папа" :)))

Re: Нестабильность из-за задержек

Вт апр 20, 2021 18:26:11

2 группы по 4 кнопки типа "кто последний тот и папа" :)))

:beer:

Вот и мой вариант… нажатие кнопки включает соответствующий светик группы, отключая при этом ранние включенные светики этой группы. Группы независимы… ну и кнопка для двух светиков…
Первая группа:
Кнопки:
РD0; PD1; PD2; PD3.
Светики:
PB0; PB1; PB2; PB3.

Вторая группа:
Кнопки:
РD4; PD5; PD6; PD7.
Светики:
PB4; PB5; PB6; PB7.

Кнопка:
РС2.
Светики:
PС0; PС1.

Butt_OUT_a.hex


МК мега8 тактируется от внутреннего генератора на 8 МГц. :beer:

ЗЫ. Есть и фишка в алгоритме… если для включения очередного светика нажать и не отпуская её нажать любую другую кнопку из группы, то засветится следующий светик не гася предыдущий. Выключить светики можно нажав повторно на кнопку того светика который необходимо погасить. Второй светик останется включенным. Таким образом можно зажечь одновременно все 4 светика. Но можно эту фишку и убрать, изменив алгоритм. :beer:
Последний раз редактировалось Самсусамыч Вт апр 20, 2021 18:35:28, всего редактировалось 2 раз(а).

Re: Нестабильность из-за задержек

Вт апр 20, 2021 18:33:57

Вроде ясно написано
Задача в следующем: группа 4кнопки-4светодиода ( для краткости в дальнейшем 4кн-4сд) с зависимым включением, таких групп две, сами группы между собой независимы.
думаю П2К.
Demiurg, ваш proc_device полностью переписывать надо.
Одним словом тот же самый алгоритм только в упакованном виде, если распаковать там целая портянка получится.
Честно говоря я ожидал большего, к примеру:
Код:
if (Set_Is_Key_Kn0_Pressed ())  a |= KEY_KN_0_BIT;
это должно было задаваться отдельной задачей, к примеру у меня

Хотите оберну в функцию?
а вот светики
а вот как кнопки со светиками задаются

Re: Нестабильность из-за задержек

Вт апр 20, 2021 21:39:05

т.е. да как П2К, но при одновременном нажатии горит только старший

Сделал иначе… то есть пока не отпустишь кнопку в группе, другие из группы не реагируют. И это не зависит от последовательности (старшая/младшая). :beer:
Butt_OUT_b.hex

Re: Нестабильность из-за задержек

Вт апр 20, 2021 23:20:36

Dimon456, в моем примере я показал только кнопку триггер. То есть, пример подавления дребезга, удержание, двухрежимный автоповтор. Держим кнопку, включается один автоповтор, держим дальше, долбит ещё быстрее. Включение одного светодиода, и мигалка. На тот момент ТС не ответил, когда я просил полное ТЗ. А код я тогда не стал глядеть. Не до того было. Я сейчас крайне занят. Ну а дальше вы все потянулись.
Как я уже писал, технически, на остальных кнопках подавление дребезга как бы можно и не делать, ну выставит программа порты ещё раз. Не айс, конечно. А дальше ТС перестал участвовать в теме.

Re: Нестабильность из-за задержек

Ср апр 21, 2021 07:41:20

Самсусамыч, ну и кто в твоем хексе увидит твой алгоритм?
или ты думаешь, что народ кинется собирать макет и прошивать твой хекс, чтобы посмотреть его работу?

Re: Нестабильность из-за задержек

Ср апр 21, 2021 08:05:46

Starichok51, емнип он пишет на алгоритмбилдере, "исходник" всё-равно мало кому понятен будет.
А вообще.... господа, создали бы отдельную тему по-хорошему где обсуждали. А то ТС уже наверное заблудился и запутался тут.

Re: Нестабильность из-за задержек

Ср апр 21, 2021 08:29:25

я это знаю, что он пишет на АБ.
брал я как-то у него один исходник - понять можно.
Ответить