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

Обсуждаем контроллеры компании Atmel.
Sergbern
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Ср ноя 21, 2018 02:29:02

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

Сообщение Sergbern »

Всем доброго! Подсобите страждущему, решившему на старости лет " запрыгнуть хоть на последнюю ступеньку последнего вагона " по части написания программ.
База: CVAVR 3,12 , ATMEGA8, Proteus8.
Задача в следующем: группа 4кнопки-4светодиода ( для краткости в дальнейшем 4кн-4сд) с зависимым включением, таких групп две, сами группы между собой независимы. С этим проблем нет. Но нужна ещё 9-ая кн-триггер и к ней 2 сд: нажали кн -- один сд загорелся и второй заморгал, нажали ещё раз -- оба сд потухли. С этим моргунчиком и проблема: когда он моргает, все 9 кн отзываются нестабильно из-за зедержек в его параметрах. Подскажите, как решить! Сведующему камраду,навернякя, просто. Для наглядности в архиве исходник и файлы для протеуса.
С уважением.
Вложения
help.zip
(52.4 КБ) 173 скачивания
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

У вас моргатель блокирует работу остальных. Сделайте его работу неблокируемой. Вот и всё.
Denis82
Встал на лапы
Сообщения: 136
Зарегистрирован: Вс авг 23, 2015 08:14:05

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

Сообщение Denis82 »

сделайте прерывание по таймеру к примеру раз в 1мс, на опрос кнопок и моргание светиков заведите счетчики которые будут инкрементироваться в прерывании таймера, в главном цикле проверяйте эти счетчики и выполняйте нужный код когда они досчитали до нужного значения

так избавитесь от блокирующих ф-ций
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

Всё решается на раз с помощью автомата конечных состояний.
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

"Автомат работает так: раз, два, три - и вас нет!")
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Всё решается на раз с помощью автомата конечных состояний.

Присоединяюсь. Конечные автоматы. ТС, напиши полностью ТЗ, покажу пример.
А пока предлагаю почитать цикл статей Татарчевского.
Леонид_М
Грызет канифоль
Сообщения: 257
Зарегистрирован: Пн окт 03, 2016 10:06:09

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

Сообщение Леонид_М »

сделайте опрос кнопок по прерывани, как уже советовал Denis82, или по прерыванию счетчика - мигание светодиодов.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Вопрос начинающего. Если делать традиционными методами, ТС ничего не поймёт. Поэтому, единственное правильное решение, показать ТС-у, что такое псевдопараллельные процессы, программные таймеры и конечные автоматы. Все остальные методы в данный момент идут лесом. Сложно и бесконечная простыня из попыток скрестить ужа с ежом.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

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

Сообщение Dimon456 »

Demiurg, ТС просит помочь ему " запрыгнуть хоть на последнюю ступеньку последнего вагона ", а вы ему что предлагаете - на "высшую ступень бытия"?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

А никто не заметил, что сам ТС вообще не участвует в теме ?
Задал глупый вопрос и смылся, забив на всё. А вы тут спорите ни о чём ...
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Я предлагаю ему способ который более доступен для понимания. Автоматное программирование гораздо проще и в разы сокращает время на создание проектов. Предел есть. Но ТС-у до него далеко.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

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

Сообщение Dimon456 »

Demiurg, вы что - смеетесь? Вы бы еще FreeRTOS сюда замутили.
Что бы поморгать светодиодом или включить выключить в зависимости от состояния ножки порта нужно что перелопатить кучу книг и литературы?

Давайте так, вам как приготовить: простенький код (типа if else) или по сложнее (с использованием указателей) и что характерно код на одну страницу уместится?
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

Конечный автомат в простейшем случае строится с помощью оператора switch ... case.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

"Dimon456". Конечный автомат отдельная сущность. Никакого сравнения с диспетчерами и ртос. Конечный автомат сам по себе и то и другое. Я знаю, что вы можете. По своему. ТС-у до этого гораздо дальше, чем на КА. Давайте прекратим бесполезный спор. А если вы хорошенько подумаете, то согласитесь со мной. Конечно, же при условии, что используете в своих проектах конечные автоматы. Если же нет, спор бесполезен и не продуктивен. Как вас, меня, так и ТС с остальными участниками этого форума.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

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

Сообщение NStorm »

Самое просто именно решение вопроса ТС в одной единственной части - сделать вместо delay'я, неблокируемую моргалку на таймере. Или от обратного - кнопки на прерывания повесить. А остальное уже всё-таки, включая КА - уже дальше начинается имхо.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Все таки настаиваю на КА. У меня уже скелет накидан в уме, как делать. Но хотел бы для уточнения ответа ТС. Будет чёткое ТЗ, программу можно накидать и отладить в течении пары тройки часов. С оконечной отладкой на железе. На отладочной плате. Вот что такое конечные автоматы. Чёткий читаемый алгоритм. Скорость создания проекта. Как пример, именно затруднительный момент для ТС-а. На это уже есть умственная заготовка. Я жду описание первой части.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

Конечный автомат отдельная сущность. Никакого сравнения с диспетчерами

Колнечный автомат с диспетчером - это уже следующий уровень. Уже можно запилить события внутри состояния КА. Но для начала switch ... case /
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Повторяю, конечные автоматы сами себе и диспетчеры и ртос. Поймите именно этот момент. Автомат может запускать сам себя, другие автоматы, вложенные автоматы.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

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

Сообщение Dimon456 »

Ваш конечный автомат - это просто заготовка, его еще готовить надо, или смотреть как другие готовят.
Вы просто раздуваете самый простой алгоритм, который занимает две-три строчки кода, не понятно во что - в большой огромный алгоритм с кучей переменных и составляющих. Возникает один вопрос - для чего?
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Вы не правы по всем пунктам. Нужно быстро сляпать рабочий проект. Мы не искусством занимаемся. Не самолюбованием. А смотрите как я красиво написал. Или смотрите, как я сэкономил пару байтов. Есть задача, её нужно быстро решить. Требования к проекту. Псевдопараллельность. Модульность. Несколько таймеров (мы то понимаем, что это программные таймеры). Быстрая сборка, компоновка кубиков. Скорость создания проекта. Конечные автоматы на данном проекте соответствуют всем пунктам. Спор закончен.
Ответить

Вернуться в «AVR»