Форум РадиоКот https://radiokot.ru/forum/ |
|
Нестабильность из-за задержек https://radiokot.ru/forum/viewtopic.php?f=57&t=176597 |
Страница 1 из 8 |
Автор: | Sergbern [ Ср апр 14, 2021 03:23:35 ] | ||
Заголовок сообщения: | Нестабильность из-за задержек | ||
Всем доброго! Подсобите страждущему, решившему на старости лет " запрыгнуть хоть на последнюю ступеньку последнего вагона " по части написания программ. База: CVAVR 3,12 , ATMEGA8, Proteus8. Задача в следующем: группа 4кнопки-4светодиода ( для краткости в дальнейшем 4кн-4сд) с зависимым включением, таких групп две, сами группы между собой независимы. С этим проблем нет. Но нужна ещё 9-ая кн-триггер и к ней 2 сд: нажали кн -- один сд загорелся и второй заморгал, нажали ещё раз -- оба сд потухли. С этим моргунчиком и проблема: когда он моргает, все 9 кн отзываются нестабильно из-за зедержек в его параметрах. Подскажите, как решить! Сведующему камраду,навернякя, просто. Для наглядности в архиве исходник и файлы для протеуса. С уважением.
|
Автор: | OKF [ Ср апр 14, 2021 05:52:39 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
У вас моргатель блокирует работу остальных. Сделайте его работу неблокируемой. Вот и всё. |
Автор: | Denis82 [ Ср апр 14, 2021 07:30:05 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
сделайте прерывание по таймеру к примеру раз в 1мс, на опрос кнопок и моргание светиков заведите счетчики которые будут инкрементироваться в прерывании таймера, в главном цикле проверяйте эти счетчики и выполняйте нужный код когда они досчитали до нужного значения так избавитесь от блокирующих ф-ций |
Автор: | parovoZZ [ Ср апр 14, 2021 10:15:40 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Всё решается на раз с помощью автомата конечных состояний. |
Автор: | OKF [ Чт апр 15, 2021 08:47:36 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
"Автомат работает так: раз, два, три - и вас нет!") |
Автор: | Demiurg [ Чт апр 15, 2021 10:23:54 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Всё решается на раз с помощью автомата конечных состояний. Присоединяюсь. Конечные автоматы. ТС, напиши полностью ТЗ, покажу пример. А пока предлагаю почитать цикл статей Татарчевского. |
Автор: | Леонид_М [ Чт апр 15, 2021 10:37:35 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
сделайте опрос кнопок по прерывани, как уже советовал Denis82, или по прерыванию счетчика - мигание светодиодов. |
Автор: | Demiurg [ Чт апр 15, 2021 10:40:50 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Вопрос начинающего. Если делать традиционными методами, ТС ничего не поймёт. Поэтому, единственное правильное решение, показать ТС-у, что такое псевдопараллельные процессы, программные таймеры и конечные автоматы. Все остальные методы в данный момент идут лесом. Сложно и бесконечная простыня из попыток скрестить ужа с ежом. |
Автор: | Dimon456 [ Чт апр 15, 2021 14:23:39 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Demiurg, ТС просит помочь ему " запрыгнуть хоть на последнюю ступеньку последнего вагона ", а вы ему что предлагаете - на "высшую ступень бытия"? |
Автор: | Аlex [ Чт апр 15, 2021 14:36:18 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
А никто не заметил, что сам ТС вообще не участвует в теме ? Задал глупый вопрос и смылся, забив на всё. А вы тут спорите ни о чём ... |
Автор: | Demiurg [ Чт апр 15, 2021 14:36:59 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Я предлагаю ему способ который более доступен для понимания. Автоматное программирование гораздо проще и в разы сокращает время на создание проектов. Предел есть. Но ТС-у до него далеко. |
Автор: | Dimon456 [ Чт апр 15, 2021 15:05:31 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Demiurg, вы что - смеетесь? Вы бы еще FreeRTOS сюда замутили. Что бы поморгать светодиодом или включить выключить в зависимости от состояния ножки порта нужно что перелопатить кучу книг и литературы? Давайте так, вам как приготовить: простенький код (типа if else) или по сложнее (с использованием указателей) и что характерно код на одну страницу уместится? |
Автор: | parovoZZ [ Чт апр 15, 2021 15:10:04 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Конечный автомат в простейшем случае строится с помощью оператора switch ... case. |
Автор: | Demiurg [ Чт апр 15, 2021 15:19:17 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
"Dimon456". Конечный автомат отдельная сущность. Никакого сравнения с диспетчерами и ртос. Конечный автомат сам по себе и то и другое. Я знаю, что вы можете. По своему. ТС-у до этого гораздо дальше, чем на КА. Давайте прекратим бесполезный спор. А если вы хорошенько подумаете, то согласитесь со мной. Конечно, же при условии, что используете в своих проектах конечные автоматы. Если же нет, спор бесполезен и не продуктивен. Как вас, меня, так и ТС с остальными участниками этого форума. |
Автор: | NStorm [ Чт апр 15, 2021 15:56:59 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Самое просто именно решение вопроса ТС в одной единственной части - сделать вместо delay'я, неблокируемую моргалку на таймере. Или от обратного - кнопки на прерывания повесить. А остальное уже всё-таки, включая КА - уже дальше начинается имхо. |
Автор: | Demiurg [ Чт апр 15, 2021 16:45:23 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Все таки настаиваю на КА. У меня уже скелет накидан в уме, как делать. Но хотел бы для уточнения ответа ТС. Будет чёткое ТЗ, программу можно накидать и отладить в течении пары тройки часов. С оконечной отладкой на железе. На отладочной плате. Вот что такое конечные автоматы. Чёткий читаемый алгоритм. Скорость создания проекта. Как пример, именно затруднительный момент для ТС-а. На это уже есть умственная заготовка. Я жду описание первой части. |
Автор: | parovoZZ [ Чт апр 15, 2021 16:49:19 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Цитата: Конечный автомат отдельная сущность. Никакого сравнения с диспетчерами Колнечный автомат с диспетчером - это уже следующий уровень. Уже можно запилить события внутри состояния КА. Но для начала switch ... case / |
Автор: | Demiurg [ Чт апр 15, 2021 16:57:50 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Повторяю, конечные автоматы сами себе и диспетчеры и ртос. Поймите именно этот момент. Автомат может запускать сам себя, другие автоматы, вложенные автоматы. |
Автор: | Dimon456 [ Чт апр 15, 2021 17:17:49 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Ваш конечный автомат - это просто заготовка, его еще готовить надо, или смотреть как другие готовят. Вы просто раздуваете самый простой алгоритм, который занимает две-три строчки кода, не понятно во что - в большой огромный алгоритм с кучей переменных и составляющих. Возникает один вопрос - для чего? |
Автор: | Demiurg [ Чт апр 15, 2021 17:36:56 ] |
Заголовок сообщения: | Re: Нестабильность из-за задержек |
Вы не правы по всем пунктам. Нужно быстро сляпать рабочий проект. Мы не искусством занимаемся. Не самолюбованием. А смотрите как я красиво написал. Или смотрите, как я сэкономил пару байтов. Есть задача, её нужно быстро решить. Требования к проекту. Псевдопараллельность. Модульность. Несколько таймеров (мы то понимаем, что это программные таймеры). Быстрая сборка, компоновка кубиков. Скорость создания проекта. Конечные автоматы на данном проекте соответствуют всем пунктам. Спор закончен. |
Страница 1 из 8 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |