Первое знакомство. Первые грабли. Светофор на Attiny13A
- vasyatky
- Первый раз сказал Мяу!
- Сообщения: 27
- Зарегистрирован: Чт фев 25, 2016 18:01:31
- Откуда: Ангарск
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="Demiurg",url="/forum/viewtopic.php?p=3470700#p3470700"][uquote="oleg110592",url="/forum/viewtopic.php?p=3470692#p3470692"]просто почитать:
http://we.easyelectronics.ru/AVR/avrasm ... ya-os.html[/uquote]
В диспетчере дихальта заложена мина замедленного действия.[/uquote]
Можете пояснить, что за мина?
http://we.easyelectronics.ru/AVR/avrasm ... ya-os.html[/uquote]
В диспетчере дихальта заложена мина замедленного действия.[/uquote]
Можете пояснить, что за мина?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="Demiurg",url="/forum/viewtopic.php?p=3470700#p3470700"]Если у вас не хватает мозгов освоить конечные автоматы, ковыряйтесь сами в диспетчерах[/uquote]
Однофамилец?
http://we.easyelectronics.ru/demiurg197 ... vr-si.html
Однофамилец?
http://we.easyelectronics.ru/demiurg197 ... vr-si.html
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
Да, это я. От диспетчера дихальта я отказался. Уже не помню, по каким причинам попытался модернизировать. Но после того я отказался окончательно. Потому что на тот момент начала назревать эта статья.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
два вопроса:
1. почему в любой теме необходимо навязывать собственные предпочтения, уводя дискуссию в поле собственных критериев ценности?
2. почему такое неуемное желание добиться полной унификации подходов, выливающееся в следование каким-то избранным догмам (RTOS, диспетчеры, автоматы или что-то другое)?
1. почему в любой теме необходимо навязывать собственные предпочтения, уводя дискуссию в поле собственных критериев ценности?
2. почему такое неуемное желание добиться полной унификации подходов, выливающееся в следование каким-то избранным догмам (RTOS, диспетчеры, автоматы или что-то другое)?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="ARV",url="/forum/viewtopic.php?p=3470730#p3470730"]два вопроса:
1. почему в любой теме необходимо навязывать собственные предпочтения, уводя дискуссию в поле собственных критериев ценности?
2. почему такое неуемное желание добиться полной унификации подходов, выливающееся в следование каким-то избранным догмам (RTOS, диспетчеры, автоматы или что-то другое)?[/uquote]
Любая программа является автоматом и конечна. Поэтому она уже по определению сама по себе является конечным автоматом. RTOS и диспетчеры всего лишь управляют очередностью процессов, но никак не являются самой программой. И именно этот момент упускается программистами.
1. почему в любой теме необходимо навязывать собственные предпочтения, уводя дискуссию в поле собственных критериев ценности?
2. почему такое неуемное желание добиться полной унификации подходов, выливающееся в следование каким-то избранным догмам (RTOS, диспетчеры, автоматы или что-то другое)?[/uquote]
Любая программа является автоматом и конечна. Поэтому она уже по определению сама по себе является конечным автоматом. RTOS и диспетчеры всего лишь управляют очередностью процессов, но никак не являются самой программой. И именно этот момент упускается программистами.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
вы не ответили на 2 моих вопроса, хотя и процитировали их. если любая программа - конечный автомат, то, следовательно, никакого смысла в прививании всем подряд вашего метода не требуется - у всех и так получится по-вашему методу конечных автоматовDemiurg писал(а):Любая программа является автоматом и конечна.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="ARV",url="/forum/viewtopic.php?p=3470753#p3470753"]
[/uquote]
1 - Я в данный момент на работе и нет возможности писать развернутые ответы.
2 - Любая программа уже является автоматом и конечна. Это все понимают. Но не все осознают. В силу инертности, зашоренности мышления, банальной лени, а также психологической особенностью - идти по пути наименьшего сопротивления. И продолжают по старинке применять флаговые автоматы, биглупы, диспетчеры, RTOS. Разворачиваю ответ. Так как программа уже является автоматом и конечна, то применение автоматного программирования, конечных автоматов логично и очевидно. Главный признак автомата - состояние. Программный модуль - тоже программа. Автомат и конечен. И тоже подчиняется этому принципу.
Простейший автомат- флаг, семафор, у которого 2 состояния. Флаговый автомат - автомат с неявными состояниями, количество которых на самом деле равно степеням двойки, а не количеству флагов.
вы не ответили на 2 моих вопроса, хотя и процитировали их. если любая программа - конечный автомат, то, следовательно, никакого смысла в прививании всем подряд вашего метода не требуется - у всех и так получится по-вашему методу конечных автоматовDemiurg писал(а):Любая программа является автоматом и конечна.
1 - Я в данный момент на работе и нет возможности писать развернутые ответы.
2 - Любая программа уже является автоматом и конечна. Это все понимают. Но не все осознают. В силу инертности, зашоренности мышления, банальной лени, а также психологической особенностью - идти по пути наименьшего сопротивления. И продолжают по старинке применять флаговые автоматы, биглупы, диспетчеры, RTOS. Разворачиваю ответ. Так как программа уже является автоматом и конечна, то применение автоматного программирования, конечных автоматов логично и очевидно. Главный признак автомата - состояние. Программный модуль - тоже программа. Автомат и конечен. И тоже подчиняется этому принципу.
Простейший автомат- флаг, семафор, у которого 2 состояния. Флаговый автомат - автомат с неявными состояниями, количество которых на самом деле равно степеням двойки, а не количеству флагов.
Последний раз редактировалось Demiurg Вт окт 02, 2018 11:49:44, всего редактировалось 1 раз.
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
Demiurg, автоматы, бесконечно... это всё демагогия и для поболтать. Вы про мины ответьте)
Глупый не задает вопросы. Глупый и так все знает.
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="Demiurg",url="/forum/viewtopic.php?p=3470774#p3470774"]Любая программа уже является автоматом и конечна. Это все понимают. Но не все осознают. В силу инертности, зашоренности мышления, банальной лени, а также психологической особенностью - идти по пути наименьшего сопротивления. И продолжают по старинке применять флаговые автоматы, биглупы, диспетчеры, RTOS.[/uquote]
Что мешает использовать автоматы совместно с диспетчерами или простенькими псевдо-RTOS, как это сделано, например, в RIOS/SST/QP?
[uquote="AndTer",url="/forum/viewtopic.php?p=3470799#p3470799"]Вы про мины ответьте)[/uquote]
Там же по линку в комментах ответ есть... Если запланировать задачу для гильотины, то как ее потом отменить в случае непредвиденного сбоя? Оказалось проще перейти к чистым конечным автоматам, чем найти решение такой нетривиальной задачи
Что мешает использовать автоматы совместно с диспетчерами или простенькими псевдо-RTOS, как это сделано, например, в RIOS/SST/QP?
[uquote="AndTer",url="/forum/viewtopic.php?p=3470799#p3470799"]Вы про мины ответьте)[/uquote]
Там же по линку в комментах ответ есть... Если запланировать задачу для гильотины, то как ее потом отменить в случае непредвиденного сбоя? Оказалось проще перейти к чистым конечным автоматам, чем найти решение такой нетривиальной задачи
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
Таким макаром можно в любой (абсолютно) программе найти недостающий тебе функционал и назвать это миной. Это не мина, это "там нет того, что мне необходимо".
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="Reflector",url="/forum/viewtopic.php?p=3470839#p3470839"]...автоматы...диспетчерами...RTOS...задачу для гильотины...нетривиальной...[/uquote]
ТСу надо только поморгать светодиодами.
ТСу надо только поморгать светодиодами.
Docendo discimus
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
Не, просто ТС ещё не понимает что для того чтобы помигать светодиодами надо стм32ф7, RTOS, вай-фай и фулхд дисплей. Вот и пытаются донести.
Или всё же просто флуд? Не, не может быть)
Или всё же просто флуд? Не, не может быть)
Глупый не задает вопросы. Глупый и так все знает.
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
F7 мало. Нужно не меньше H7, а то и вовсе Cortex-A с 1500 ядрами и 1500 ТБ ОЗУ.AndTer писал(а):надо стм32ф7
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
Любой игрушечный светофор сейчас должен управляться минимум с мобильника.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
VladislavS писал(а):Любой игрушечный светофор сейчас должен управляться минимум с мобильника
Мурик писал(а):7 мало. Нужно не меньше H7, а то и вовсе Cortex-A
снова прошу прощения за оффтоп, но вот всё это говорят те же люди, которые не скупились на негативные эпитеты в мой адрес, когда я говорил о целесообразности растрачивания ресурсов высокопроизводительных МК на любительские поделкиAndTer писал(а):для того чтобы помигать светодиодами надо стм32ф7, RTOS, вай-фай и фулхд дисплей
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="Reflector",url="/forum/viewtopic.php?p=3470839#p3470839"]1 - Что мешает использовать автоматы совместно с диспетчерами или простенькими псевдо-RTOS, как это сделано, например, в RIOS/SST/QP?
2 - Оказалось проще перейти к чистым конечным автоматам, чем найти решение такой нетривиальной задачи
[/uquote]
1 - Ничто и никто не мешает. Я же не говорил, что программа должна быть чистым конечным автоматом. Но также никто и ничто не мешает сделать всю программу одним главным конечным автоматом. Все подчиняется условиям ТЗ и целесообразности.
2 - Здесь вы не правы. Повторю: RTOS и диспетчеры предназначены для одной единственной цели. Управлять очередью процессов. Это не основная программа, а всего лишь инструмент. Основными программами являются программные модули, процессы, задачи, таски. И ваш подход - это латание дыр заплатками.
Про мину замедленного действия: в первом варианте диспетчера у DI HALT-а таймерная служба работала из прерывания. И задачами у него считались примерно такие действия:
"включить светодиод".
установить программный таймер на столько секунд.
закинуть в очередь задачу "выключить светодиод", которая и сработает через эти несколько секунд.
А наткнулся я на нее при следующих обстоятельствах. Я сделал автомат световых эффектов. Смена эффектов при нажатии кнопки. Когда работал один режим, я нажал на кнопку, чтобы сменить режим, этот режим установился, но, как выяснилось, в очереди задач остались болтаться задачи предыдущего режима. Во-первых, таймерная служба работала из прерываний, во-вторых, диспетчеру неизвестно, что режим сменился. Откуда ему знать, какие задачи удалять из очереди. Ведь это НЕ ЕГО НАЗНАЧЕНИЕ, а всего лишь исправно крутить карусельку-очередь заложенных процессов. Я переработал этот диспетчер, разобрал его на атомы, перелопатил. Вынес таймерную службу в основной цикл. Но проблема осталась. И тогда я понял, что нужно принципиально менять подход
Отсюда вытекает:
Подход 1:
Отдать управление RTOS, диспетчеру. И огребать последствия.
Подход 2:
Отдать управление процессу, задачей которого и является: выполнять заданный алгоритм. Когда дать команду исполнительному механизму, когда запретить работу исполнительного механизма.
На том форуме я неоднократно обсуждал этот вопрос. И только один, кто использует диспетчеры, сознался, что в его диспетчере крутятся программные модули, конечные автоматы. И я ему на это ответил так: а какой тогда вообще толк в диспетчере, если в твоем случае очередь крутит диспетчер и на переключение задач-процессов тратятся такты и время, а при моем подходе вся программа представляет из себя статичный цикл-список программных модулей. Подпрограммы, если на ассемблере, функции, если на си. И все затраченное время на переключение процессов- это вызов подпрограмм-функций и возврат в основной цикл.
Резюмирую:
Задача RTOS, диспетчеров - крутить очередь процессов. Но это всего лишь очередь процессов. И это всего лишь инструменты программиста, пассатижи, отвертка. Но никак не панацея всего и вся.
Главный алгоритм выполняют: вся программа в целом и программные модули. И чтобы это все правильно работало, управление должно быть в руках программиста, а не RTOS и диспетчеров.
Указанный мной подход универсален. Не привязан к какой-либо архитектуре. Применяя определенные правила и подходы, в разы сокращается время на создание проектов. Любой проект собирается как конструктор, из кубиков-программных модулей.
Если интересно дальше продолжать, то могу продолжить. Но учитывайте, что я занят, и не всегда могу ответить вовремя или вообще ответить. Закончу следующим. Это на словах вроде сложно, автоматное программирование, конечные автоматы, программные таймеры. Но на самом деле ничего сложного.
Для ТС:
Книги Вольфганг Трамперт "AVR-RISC микроконтроллеры фирмы ATMEL". Джон Мортон "Микроконтроллеры AVR Вводный курс".
Немного про конечные автоматы тут. В конце статьи ссылка на архив цикла статей Татарчевского. Основное я почерпнул оттуда.
2 - Оказалось проще перейти к чистым конечным автоматам, чем найти решение такой нетривиальной задачи
1 - Ничто и никто не мешает. Я же не говорил, что программа должна быть чистым конечным автоматом. Но также никто и ничто не мешает сделать всю программу одним главным конечным автоматом. Все подчиняется условиям ТЗ и целесообразности.
2 - Здесь вы не правы. Повторю: RTOS и диспетчеры предназначены для одной единственной цели. Управлять очередью процессов. Это не основная программа, а всего лишь инструмент. Основными программами являются программные модули, процессы, задачи, таски. И ваш подход - это латание дыр заплатками.
Про мину замедленного действия: в первом варианте диспетчера у DI HALT-а таймерная служба работала из прерывания. И задачами у него считались примерно такие действия:
"включить светодиод".
установить программный таймер на столько секунд.
закинуть в очередь задачу "выключить светодиод", которая и сработает через эти несколько секунд.
А наткнулся я на нее при следующих обстоятельствах. Я сделал автомат световых эффектов. Смена эффектов при нажатии кнопки. Когда работал один режим, я нажал на кнопку, чтобы сменить режим, этот режим установился, но, как выяснилось, в очереди задач остались болтаться задачи предыдущего режима. Во-первых, таймерная служба работала из прерываний, во-вторых, диспетчеру неизвестно, что режим сменился. Откуда ему знать, какие задачи удалять из очереди. Ведь это НЕ ЕГО НАЗНАЧЕНИЕ, а всего лишь исправно крутить карусельку-очередь заложенных процессов. Я переработал этот диспетчер, разобрал его на атомы, перелопатил. Вынес таймерную службу в основной цикл. Но проблема осталась. И тогда я понял, что нужно принципиально менять подход
Отсюда вытекает:
Подход 1:
Отдать управление RTOS, диспетчеру. И огребать последствия.
Подход 2:
Отдать управление процессу, задачей которого и является: выполнять заданный алгоритм. Когда дать команду исполнительному механизму, когда запретить работу исполнительного механизма.
На том форуме я неоднократно обсуждал этот вопрос. И только один, кто использует диспетчеры, сознался, что в его диспетчере крутятся программные модули, конечные автоматы. И я ему на это ответил так: а какой тогда вообще толк в диспетчере, если в твоем случае очередь крутит диспетчер и на переключение задач-процессов тратятся такты и время, а при моем подходе вся программа представляет из себя статичный цикл-список программных модулей. Подпрограммы, если на ассемблере, функции, если на си. И все затраченное время на переключение процессов- это вызов подпрограмм-функций и возврат в основной цикл.
Резюмирую:
Задача RTOS, диспетчеров - крутить очередь процессов. Но это всего лишь очередь процессов. И это всего лишь инструменты программиста, пассатижи, отвертка. Но никак не панацея всего и вся.
Главный алгоритм выполняют: вся программа в целом и программные модули. И чтобы это все правильно работало, управление должно быть в руках программиста, а не RTOS и диспетчеров.
Указанный мной подход универсален. Не привязан к какой-либо архитектуре. Применяя определенные правила и подходы, в разы сокращается время на создание проектов. Любой проект собирается как конструктор, из кубиков-программных модулей.
Если интересно дальше продолжать, то могу продолжить. Но учитывайте, что я занят, и не всегда могу ответить вовремя или вообще ответить. Закончу следующим. Это на словах вроде сложно, автоматное программирование, конечные автоматы, программные таймеры. Но на самом деле ничего сложного.
Для ТС:
Книги Вольфганг Трамперт "AVR-RISC микроконтроллеры фирмы ATMEL". Джон Мортон "Микроконтроллеры AVR Вводный курс".
Немного про конечные автоматы тут. В конце статьи ссылка на архив цикла статей Татарчевского. Основное я почерпнул оттуда.
Последний раз редактировалось Demiurg Вт окт 02, 2018 16:44:38, всего редактировалось 3 раза.
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="ARV",url="/forum/viewtopic.php?p=3471020#p3471020"]которые не скупились на негативные эпитеты в мой адрес[/uquote]
И я прошу...
Но не надо впадать в крайности и подмазываться. Мы тут о другом, а не о тебе.
Одно дело покупать мк за 100500 денег и запускать операционку тупо для помигать, другое дело покупать дешевле и производительней, что облегчает и ускоряет разработку.
Снова логика потерялась...
Добавлено after 2 minutes 49 seconds:
[uquote="Demiurg",url="/forum/viewtopic.php?p=3471039#p3471039"]Если интересно дальше продолжать, то могу продолжить[/uquote]
В теме про светофор на аттини13 нет. Хотя лично мне и в других местах эта тема неинтересна.
И я прошу...
Но не надо впадать в крайности и подмазываться. Мы тут о другом, а не о тебе.
Одно дело покупать мк за 100500 денег и запускать операционку тупо для помигать, другое дело покупать дешевле и производительней, что облегчает и ускоряет разработку.
Снова логика потерялась...
Добавлено after 2 minutes 49 seconds:
[uquote="Demiurg",url="/forum/viewtopic.php?p=3471039#p3471039"]Если интересно дальше продолжать, то могу продолжить[/uquote]
В теме про светофор на аттини13 нет. Хотя лично мне и в других местах эта тема неинтересна.
Глупый не задает вопросы. Глупый и так все знает.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Первое знакомство. Первые грабли. Светофор на Attiny13A
[uquote="ARV",url="/forum/viewtopic.php?p=3471020#p3471020"]снова прошу прощения за оффтоп[/uquote]И как же тебя, скотиняка, понять? То кричит что идей нет и всё изобретено, а как подкидываешь идею - в кусты? В век "гаджетомании" бэбик будет просто в восторге игрушкой с мобилы управлять. Ну это, конечно, если папка проц правильно выбрал - esp8285, к примеру.