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

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 09:33:05


В диспетчере дихальта заложена мина замедленного действия.

Можете пояснить, что за мина?

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 09:48:46

Если у вас не хватает мозгов освоить конечные автоматы, ковыряйтесь сами в диспетчерах

Однофамилец?
http://we.easyelectronics.ru/demiurg197 ... vr-si.html

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 09:52:34

Да, это я. От диспетчера дихальта я отказался. Уже не помню, по каким причинам попытался модернизировать. Но после того я отказался окончательно. Потому что на тот момент начала назревать эта статья.

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 10:02:34

два вопроса:
1. почему в любой теме необходимо навязывать собственные предпочтения, уводя дискуссию в поле собственных критериев ценности?
2. почему такое неуемное желание добиться полной унификации подходов, выливающееся в следование каким-то избранным догмам (RTOS, диспетчеры, автоматы или что-то другое)?

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 10:06:13

Князьки.

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 10:28:46

Demiurg меня как и автора темы тоже интересует "Можете пояснить, что за мина?", в последней ссылке в комментариях есть упоминание о мине. Запустил в протеусе мигалку двух светодиодов на тини13 - мигает уже долго, а мина пока не взорвалась.
Изображение

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 10:39:25

два вопроса:
1. почему в любой теме необходимо навязывать собственные предпочтения, уводя дискуссию в поле собственных критериев ценности?
2. почему такое неуемное желание добиться полной унификации подходов, выливающееся в следование каким-то избранным догмам (RTOS, диспетчеры, автоматы или что-то другое)?

Любая программа является автоматом и конечна. Поэтому она уже по определению сама по себе является конечным автоматом. RTOS и диспетчеры всего лишь управляют очередностью процессов, но никак не являются самой программой. И именно этот момент упускается программистами.

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 10:47:21

Demiurg писал(а):Любая программа является автоматом и конечна.
вы не ответили на 2 моих вопроса, хотя и процитировали их. если любая программа - конечный автомат, то, следовательно, никакого смысла в прививании всем подряд вашего метода не требуется - у всех и так получится по-вашему методу конечных автоматов :)

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 11:14:31

Demiurg писал(а):Любая программа является автоматом и конечна.
вы не ответили на 2 моих вопроса, хотя и процитировали их. если любая программа - конечный автомат, то, следовательно, никакого смысла в прививании всем подряд вашего метода не требуется - у всех и так получится по-вашему методу конечных автоматов :)

1 - Я в данный момент на работе и нет возможности писать развернутые ответы.
2 - Любая программа уже является автоматом и конечна. Это все понимают. Но не все осознают. В силу инертности, зашоренности мышления, банальной лени, а также психологической особенностью - идти по пути наименьшего сопротивления. И продолжают по старинке применять флаговые автоматы, биглупы, диспетчеры, RTOS. Разворачиваю ответ. Так как программа уже является автоматом и конечна, то применение автоматного программирования, конечных автоматов логично и очевидно. Главный признак автомата - состояние. Программный модуль - тоже программа. Автомат и конечен. И тоже подчиняется этому принципу.

Простейший автомат- флаг, семафор, у которого 2 состояния. Флаговый автомат - автомат с неявными состояниями, количество которых на самом деле равно степеням двойки, а не количеству флагов.
Последний раз редактировалось Demiurg Вт окт 02, 2018 11:49:44, всего редактировалось 1 раз.

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 11:39:55

Demiurg, автоматы, бесконечно... это всё демагогия и для поболтать. Вы про мины ответьте)

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 12:26:55

Любая программа уже является автоматом и конечна. Это все понимают. Но не все осознают. В силу инертности, зашоренности мышления, банальной лени, а также психологической особенностью - идти по пути наименьшего сопротивления. И продолжают по старинке применять флаговые автоматы, биглупы, диспетчеры, RTOS.

Что мешает использовать автоматы совместно с диспетчерами или простенькими псевдо-RTOS, как это сделано, например, в RIOS/SST/QP?

Вы про мины ответьте)

Там же по линку в комментах ответ есть... Если запланировать задачу для гильотины, то как ее потом отменить в случае непредвиденного сбоя? Оказалось проще перейти к чистым конечным автоматам, чем найти решение такой нетривиальной задачи :)

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 12:39:23

Таким макаром можно в любой (абсолютно) программе найти недостающий тебе функционал и назвать это миной. Это не мина, это "там нет того, что мне необходимо".

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 12:41:13

...автоматы...диспетчерами...RTOS...задачу для гильотины...нетривиальной...

ТСу надо только поморгать светодиодами.

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 13:57:37

Не, просто ТС ещё не понимает что для того чтобы помигать светодиодами надо стм32ф7, RTOS, вай-фай и фулхд дисплей. Вот и пытаются донести.
Или всё же просто флуд? Не, не может быть)

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 14:13:41

AndTer писал(а):надо стм32ф7
F7 мало. Нужно не меньше H7, а то и вовсе Cortex-A с 1500 ядрами и 1500 ТБ ОЗУ. :))) :)

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 14:18:54

Любой игрушечный светофор сейчас должен управляться минимум с мобильника.

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 15:21:59

VladislavS писал(а):Любой игрушечный светофор сейчас должен управляться минимум с мобильника
Мурик писал(а):7 мало. Нужно не меньше H7, а то и вовсе Cortex-A
AndTer писал(а):для того чтобы помигать светодиодами надо стм32ф7, RTOS, вай-фай и фулхд дисплей
снова прошу прощения за оффтоп, но вот всё это говорят те же люди, которые не скупились на негативные эпитеты в мой адрес, когда я говорил о целесообразности растрачивания ресурсов высокопроизводительных МК на любительские поделки

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 15:38:29

1 - Что мешает использовать автоматы совместно с диспетчерами или простенькими псевдо-RTOS, как это сделано, например, в RIOS/SST/QP?

2 - Оказалось проще перейти к чистым конечным автоматам, чем найти решение такой нетривиальной задачи :)

1 - Ничто и никто не мешает. Я же не говорил, что программа должна быть чистым конечным автоматом. Но также никто и ничто не мешает сделать всю программу одним главным конечным автоматом. Все подчиняется условиям ТЗ и целесообразности.

2 - Здесь вы не правы. Повторю: RTOS и диспетчеры предназначены для одной единственной цели. Управлять очередью процессов. Это не основная программа, а всего лишь инструмент. Основными программами являются программные модули, процессы, задачи, таски. И ваш подход - это латание дыр заплатками.

Про мину замедленного действия: в первом варианте диспетчера у DI HALT-а таймерная служба работала из прерывания. И задачами у него считались примерно такие действия:

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

А наткнулся я на нее при следующих обстоятельствах. Я сделал автомат световых эффектов. Смена эффектов при нажатии кнопки. Когда работал один режим, я нажал на кнопку, чтобы сменить режим, этот режим установился, но, как выяснилось, в очереди задач остались болтаться задачи предыдущего режима. Во-первых, таймерная служба работала из прерываний, во-вторых, диспетчеру неизвестно, что режим сменился. Откуда ему знать, какие задачи удалять из очереди. Ведь это НЕ ЕГО НАЗНАЧЕНИЕ, а всего лишь исправно крутить карусельку-очередь заложенных процессов. Я переработал этот диспетчер, разобрал его на атомы, перелопатил. Вынес таймерную службу в основной цикл. Но проблема осталась. И тогда я понял, что нужно принципиально менять подход

Отсюда вытекает:
Подход 1:
Отдать управление RTOS, диспетчеру. И огребать последствия.

Подход 2:
Отдать управление процессу, задачей которого и является: выполнять заданный алгоритм. Когда дать команду исполнительному механизму, когда запретить работу исполнительного механизма.

На том форуме я неоднократно обсуждал этот вопрос. И только один, кто использует диспетчеры, сознался, что в его диспетчере крутятся программные модули, конечные автоматы. И я ему на это ответил так: а какой тогда вообще толк в диспетчере, если в твоем случае очередь крутит диспетчер и на переключение задач-процессов тратятся такты и время, а при моем подходе вся программа представляет из себя статичный цикл-список программных модулей. Подпрограммы, если на ассемблере, функции, если на си. И все затраченное время на переключение процессов- это вызов подпрограмм-функций и возврат в основной цикл.

Резюмирую:
Задача RTOS, диспетчеров - крутить очередь процессов. Но это всего лишь очередь процессов. И это всего лишь инструменты программиста, пассатижи, отвертка. Но никак не панацея всего и вся.

Главный алгоритм выполняют: вся программа в целом и программные модули. И чтобы это все правильно работало, управление должно быть в руках программиста, а не RTOS и диспетчеров.

Указанный мной подход универсален. Не привязан к какой-либо архитектуре. Применяя определенные правила и подходы, в разы сокращается время на создание проектов. Любой проект собирается как конструктор, из кубиков-программных модулей.

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

Для ТС:
Книги Вольфганг Трамперт "AVR-RISC микроконтроллеры фирмы ATMEL". Джон Мортон "Микроконтроллеры AVR Вводный курс".

Немного про конечные автоматы тут. В конце статьи ссылка на архив цикла статей Татарчевского. Основное я почерпнул оттуда.
Последний раз редактировалось Demiurg Вт окт 02, 2018 16:44:38, всего редактировалось 3 раз(а).

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 15:45:07

которые не скупились на негативные эпитеты в мой адрес

И я прошу...
Но не надо впадать в крайности и подмазываться. Мы тут о другом, а не о тебе.
Одно дело покупать мк за 100500 денег и запускать операционку тупо для помигать, другое дело покупать дешевле и производительней, что облегчает и ускоряет разработку.
Снова логика потерялась...

Добавлено after 2 minutes 49 seconds:
Если интересно дальше продолжать, то могу продолжить

В теме про светофор на аттини13 нет. Хотя лично мне и в других местах эта тема неинтересна.

Re: Первое знакомство. Первые грабли. Светофор на Attiny13A

Вт окт 02, 2018 18:33:36

снова прошу прощения за оффтоп
И как же тебя, скотиняка, понять? То кричит что идей нет и всё изобретено, а как подкидываешь идею - в кусты? В век "гаджетомании" бэбик будет просто в восторге игрушкой с мобилы управлять. Ну это, конечно, если папка проц правильно выбрал - esp8285, к примеру.
Ответить