Вытесняющая многозадачная ОС. Практика AVR

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

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение Demiurg »

1 - Данное обсуждение - обсуждение. Не ругаться, не выпячивать свой IQ. Именно обсуждение. Приведение своих доводов за и против. Получение новой информации. Поправка или укрепление своих убеждений на основе полученной новой информации. Я указываю свою позицию, чтобы не было в дальнейшем недопонимания.
2 - Я не возвожу конечные автоматы в абсолют. Повторю: я до сих пор не нашел им альтернативы.
3 - По поводу вашей реализации программных таймеров:
а) обработка очереди таймеров в прерывании. Это долго. Именно от этого я сразу ушел.
б) мина замедленного действия.
в) управление опять же как с диспетчерами и ртос отдано таймеру. Не алгоритм управляет программой, а таймер.
4 -
И, как мне кажется, у меня писанины раз в 10 меньше :)
. Заблуждение. Вывернутый наизнанку код. Мало того, программа усложняется отслеживаением мин.
5 -
увлекшись формальным приведением любой программы в ЯВНО ВЫРАЖЕННЫЙ автомат состояний вы ничего, кроме напрасного усложнения кода, не делаете.
. Целесообразность. Если что-то можно написать обычным линейным кодом, я так и делаю.
6 - В моей реализации нет массива, очереди таймеров. Каждый таймер локален.

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

П.С. Я уже прошел этот период, наловил граблей и выявил суть проблемы. Вам же придется повторять этот путь, чтобы до конца понять, о чем я говорю.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3581283#p3581283"][uquote="ARV",url="/forum/viewtopic.php?p=3581258#p3581258"]любая программа - это воплощение конечного автомата[/uquote]
С определением конечного автомата не сходится. Любая самообучающася программа, теоретически (при неограниченном объеме памяти), имеет бесконечное количество состояний. То бишь не является конечным автоматом.[/uquote]слова "самообучающаяся" в моих словах нет. не надо смешивать теорию и реальность. любой алгоритм может быть преобразован в граф состояний и наоборот. этого достаточно, чтобы утверждать то, что я сказал. в конечном счете, реализация микроядра любого CPU есть ничто иное, как автомат состояний :)))
Demiurg писал(а):Не ругаться, не выпячивать свой IQ
на этот счет можете быть спокойны, у меня его нет :)))
Demiurg писал(а):я до сих пор не нашел им альтернативы
да, я заметил это по вашим многочисленным ообщениям. но ведь это не означает, что иных путей нет - вы же не единственный программист на планете, как-то же делают программное управление прессами и атомными станциями? или вы всерьёз уверены, что там делают исключительно по вашей методе?
Demiurg писал(а):обработка очереди таймеров в прерывании. Это долго.
долго ли, коротко - это понятие относительное. я всегда и везде пытаюсь выяснить: куда девают сэкономленные такты процессора те, кто стремится все ускорить? не солят же на голодные годы в баночке... вся эта бесконечная гонка за экономией энергии (единственное, что на самом деле меняется от ускорения программы, и то еще не факт) - для чего?! вот прямо все занимаются исключительно батарейными конструкциями, которые в течение десятилетий должны выполнять критически важные задачи без присутствия человека? ну ерунда же... применений с повышенными требованиями к экономичности - лишь небольшая часть среди всех.
Например, на сегодня у меня с момента приема последнего байта USARTом (в прерывании) до начала обработки принятой строки проходит порядка 100 микросекунд. Это много или мало? Допустим, вы добились латентности в 10 микросекунд - что это изменит в системе? именно из вот подобных утверждений о быстродействии проистекает желание многих обрабатывать нажатия кнопок по прерываниям - дескать, это же быстро!
Demiurg писал(а):мина замедленного действия
не вижу никакой мины. мины появляются из-за действий программиста: сам себе подложил, сам и подорвался.
Demiurg писал(а):управление опять же как с диспетчерами и ртос отдано таймеру
таймер - это инструмент. как вы его используете - ваша пробема. вы можете таймером менять состояния программы, а можете и не менять. вы можете заставить таймер быть основой реализации алгоритма, а можете оставить ему третьестепенные функции. заранее ничего не предопределено!
Demiurg писал(а):Если что-то можно написать обычным линейным кодом, я так и делаю.
странно... и я так стремлюсь поступать... откуда же у нас настолько полярные мнения о таймерах? ;)
Demiurg писал(а):предлагаю написать тестовую программу автомат световых эффектов по вашему методу.
да по какому методу-то? и какого рода автомат?
я вообще не вижу связи между автоматом световых эффектов и программными таймерами.
Demiurg писал(а):Вам же придется повторять этот путь, чтобы до конца понять, о чем я говорю
вот опять вы о своем пути... да не пойду я по вашему пути! :) согласны, что может существовать более одного пути, ведущего к цели? с чего вы взяли, что я пойду по-вашему? на моем пути я пока ни мин, ни ям не вижу из числа предсказанных вами...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение Demiurg »

Конечные автоматы. За и против. Остановимся вот на чем. Я занимаюсь промоборудованием. Как раз из-за того, что оборудование - это режимы работы, альтернативы конечным автоматам нет. Режим работа = состояние автомата. Оборудование - автомат.
Двигатель: "СТОП", "РАЗГОН", "РАБОТА", "ТОРМОЖЕНИЕ".
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ПростоНуб »

[uquote="ARV",url="/forum/viewtopic.php?p=3581394#p3581394"][uquote="ПростоНуб",url="/forum/viewtopic.php?p=3581283#p3581283"][uquote="ARV",url="/forum/viewtopic.php?p=3581258#p3581258"]любая программа - это воплощение конечного автомата[/uquote]
Любая самообучающася программа ... имеет бесконечное количество состояний.[/uquote]слова "самообучающаяся" в моих словах нет.[/uquote]

- Все ночи темные!
- А если полнолуние?
- Слова "полнолуние" в моих словах нет!
Занавес...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

ПростоНуб писал(а):Занавес...
не надо передергивать. еще раз: любая программа ПРАКТИЧЕСКИ имеет КОНЕЧНОЕ количество состояний, поскольку всегда ОБУЧАЕТСЯ (если уж использовать ваш термин) на КОНЕЧНОМ количестве входящих данных. математическая абстракция "бесконечность" на практике неуместна, и всегда являетс синонимом конечного числа. или под термином "самообучающаяся" вы подразумевали абстрактный инскусственный интеллект, с реально бесконечными когнитивными способностями? ;)
Demiurg писал(а):Как раз из-за того, что оборудование - это режимы работы, альтернативы конечным автоматам нет.
блин, да разве я спорю? вы почему-то постоянно смешиваете теплое с мягким: если не конечный автомат, то это говно. если это не говно - то это конечный автомат.
в конечных автоматах поведение программы определеяет не состояние, а процесс перехода из состояния в состояние. чтобы из состояния "РАЗГОН" перейти в состояние "СТОП" мало изменить значение одной чейки в программе, надо выполнить ряд действий, которые приведут аппаратуру изделия в это самое состояние. и среди этих действий могут быть и команды управления таймерами. как это связано с тем, что я реализовал "разбросанные" по коду таймеры - не понимаю. о чем вы пытаетесь спорить, что хотите доказать? не понимаю...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ПростоНуб »

[uquote="ARV",url="/forum/viewtopic.php?p=3581448#p3581448"]
ПростоНуб писал(а):Занавес...
не надо передергивать.[/uquote]
Где тут передергивание, если Вы сами сказали, что слово "любая" не включает в себя "самообучающаяся"? То бишь "любая" - это только те, которые Вы сами имели в виду, а вовсе не любая в общепринятом смысле?

любая программа ПРАКТИЧЕСКИ имеет КОНЕЧНОЕ количество состояний, поскольку всегда ОБУЧАЕТСЯ (если уж использовать ваш термин) на КОНЕЧНОМ количестве входящих данных
1. Во первых, алгоритм самообучающейся программы меняется под воздействием внешних данных. Если при работе с big data - это обычный процесс, то на МК такое реализуемо, но вряд ли имеет практическое применение из-за ограниченности ресурсов МК. Те самообучающающиеся алгоритмы, с которыми я имею дело, оперируют с терабайтами данных.
2. Если Вы снимаете данные с какого-то датчика в течении неопределенно длинного промежутка времени, это по Вашему конечное количество исходных данных? С точки зрения математики, спрогнозироваь поведение самообучающающегося алгоритма можно только через бесконечность в пределе. Что, кстати и делается при разработке алгоритма, чтобы добиться сходимости этих пределов на требуемой области определения.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

Да хоть триллиарды терабайтов, это конечное число. Состояние программы определяется не комбинациями во времени, а комбинациями входных и выходных параметров в конкретный момент времени. И число этих комбинаций весьма мало.
Хватит уже теоретизировать, спуститесь с высот своих бигдат к конкретной теме.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ПростоНуб »

[uquote="ARV",url="/forum/viewtopic.php?p=3581594#p3581594"]Хватит уже теоретизировать[/uquote]
Собственно говоря, я именно к этому Вас и призываю. А если уж взялись теоретизировать, то следите за речью и избегайте употребления ключевых слов демагогии (любой, все, очевидно, всегда и т.п.), не допустимых в научных теориях.

Добавлено after 3 minutes 13 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3581594#p3581594"]Да хоть триллиарды терабайтов, это конечное число.[/uquote]
Приведенное Вами число конечное. А у я говорю о бесконечном потоке данных, который исследовать без использования средств математического анализа за обозримое время невозможно.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

А вы не говорите о бесконечном потоке. Вы говорите по теме.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ПростоНуб »

[uquote="ARV",url="/forum/viewtopic.php?p=3581682#p3581682"]А вы не говорите о бесконечном потоке. Вы говорите по теме.[/uquote]
По теме. МК принимает бесконечный поток данных от датчика. Состояние МК описывается функцией F от последовательности Xn при n стремящемся к бесконечности. Если функция F не сходится, то количество состояний МК бесконечно. ЧТД.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

По теме: где в этой теме говорилось о датчике? Какой такой поток данных? Программа обрабатывает конечное количество дискретных кодов датчика. И если уж меняет своё СОСТОЯНИЕ, то число этих состояний пропорционально этим кодам, т.е. тоже конечно. Автомат может функционировать бесконечное время, но количество его состояний будет при этом конечным.

Не разводите демагогию.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ПростоНуб »

[uquote="ARV",url="/forum/viewtopic.php?p=3581710#p3581710"]Программа обрабатывает конечное количество дискретных кодов датчика.[/uquote]
Назовите любое конечное число n. После достижении этого числа датчик выдаст очередной код X(n+1). Так как количество событий, как минимум на единицу свыше любого конечного числа, то, следовательно, количество событий является бесконечным.
Если уж занимаетесь теорией, то используйте математику, а не демагогию )
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

Жаль, с мобильной версии нельзя минус вам поставить. Возьмём простой датчик для примера: DS18B20. Он выдаёт температуру 12-битным числом. Если вы сумеете заставить выдать его код температуры +1 бит, тогда и возвращайтесь в тему. Любой дискретный датчик выдаёт конечное количество кодов, и с этим ничего не поделать...

Добавлено after 2 minutes 7 seconds:
И, кстати, совершенно очевидно, что вряд ли каждому коду температуры соответствует своё уникальное состояние. Практически речь идёт о диапазоне значений, т.е. количество состояний и того меньше.

Добавлено after 47 seconds:
И ещё: я теорией не занимаюсь. Просто для справки.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ПростоНуб »

[uquote="ARV",url="/forum/viewtopic.php?p=3581726#p3581726"]Он выдаёт температуру 12-битным числом. Если вы сумеете заставить выдать его код температуры +1 бит[/uquote]
Вы вообще знаете, что такое последовательность? Да пусть датчик выдает только два значения: 0 и 1. Если функция состояния автомата зависит от n принятых показаний датчика, то запись этих состояний есть строка длиной в n бит. И удлиняется на 1 бит при каждом новом показании датчика.

Для примера из практики. Показания сейсмических датчиков, если не ошибаюсь, систематически собираются с начала XIX века. Уже почти 200 лет. И весь этот объем данных до сих пор востребован для предсказания извержений вулканов и землетрясений. Если бы они собирались не 200, а 2000 лет, то сроки и точность этих предсказаний были бы в разы выше.
По Вашему, если "разрядность" сейсмодатчика всего 8 бит, то для прогнозирования землетрясений достаточно было бы собрать всего 256 показаний? )))

Добавлено after 1 minute 59 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3581726#p3581726"]Жаль, с мобильной версии нельзя минус вам поставить.[/uquote]
Ой пропустил. "Юпитер - ты сердишься, значит ты не прав". Спасибо что признали себя неправым )
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

Ощущение, что вы клон КРАМа. И это не комплимент.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
dgrett
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение dgrett »

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

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение Demiurg »

ПростоНуб. Прекратите докапываться. ARV правильно сделал вам замечание, что состояние автомата не зависит от бесконечности входного числа. Есть критерий, условие, диапазон. Вышли за рамки, значит определённые действия.
Все что вы описали, это статистика. Сбор данных и анализ.
Самообучающиеся программы. Пусть мы возьмём за аналогию человеческий мозг. Уровень сознания зависит от нейронных связей. Памяти, количества объектов, которыми может оперировать индивидуум, качества информации. Абстракции и ассоциации.
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ПростоНуб »

[uquote="Demiurg",url="/forum/viewtopic.php?p=3582001#p3582001"]что состояние автомата не зависит от бесконечности входного числа[/uquote]
Но может зависеть от бесконечного количества входных чисел.
Все что вы описали, это статистика
Нет. Статистика, обычно, оперирует агрегирующими функциями. А веду речь о data mining, к которому статистические методы имеют весьма косвенное отношение.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение ARV »

Мне бы хотелось, чтобы обсуждение вернулось в русло темы ROTS для AVR или, раз уж волею судеб я отказался в настоящий момент от RTOS, суррогатным воплощениям квази-RTOS.

Добавлено after 3 minutes 10 seconds:
Если взять для примера аналог конечного автомата - сито, в котором конечное количество отверстий, и просыпать бесконечное количество песчинок сквозь него, то количество вариантов поведения для каждой песчинки все равно конечно: она либо выпадет в одно из отверстий, либо застрянет в сите. И для системы сито-песок существует только эти состояния, и никаких иных быть не может.

Все сообщения по "теории конечных автоматов" без практических примеров, в том числе в виде исходников, буду безжалостно и однообразно минусовать.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Re: Вытесняющая многозадачная ОС. Практика AVR

Сообщение Demiurg »

По конечным автоматам закрываем обсуждение. Касаемо исходного вопроса, как сделать красиво.
Предлагаю следующее. Вспоминаем правило. Структуры, данные + алгоритм = программа. И зависимость. Чем больше плечо структуры, данные, тем меньше программа.
Идея следующая: табличный метод.
Раз слово состояние нервирует, пусть будет индекс. Создаём переменную-индекс таблицы.
Создаем структуру:
Curr_index - текущий индекс.
Next_index - будущий индекс.
s - входной символ.
func - понятно, функция, callbak.
Обработка следующая:
Считываем переменную-индекс. Находим по этому индексу начало массива с идентичным индексом. Затем ищем совпадение с входным символом. Как только совпало, записываем в переменную-индекс элемент Next_index и выполняем элемент func.
У такого метода единственный минус - перебор таблицы. Но существенный плюс, который перевешивает этот минус. Лёгкость создания и редактирования таблицы. Пример таблицы.
I_1, I_2, Symb_A, Func_1
I_1, I_2, Symb_B, Func_2
I_1, I_2, Symb_C, Func_3
I_1, I_2, Symb_D, Func_4

I_2, I_3, Symb_A, Func_4
I_2, I_3, Symb_B, Func_5
I_2, I_3, Symb_C, Func_6

I_3, I_4, Symb_C, Func_7
I_3, I_4, Symb_D, Func_8

Я в этом топике приводил пример таблицы соответствия строки символу:
Vasya, Symb_A
Petya, Symb_B

Это я к чему. Входным символом мы можем считать как сами символы, так и соответствия. Строка - символ. То есть, служебные сообщения.

Пользуйтесь и радуйтесь красоте кода...

На самом деле это реализация конечного автомата. Так сказать, идеал, абсолют. Ну это я уже поглумился на отвращением к конечным автоматам... Ггг

Дополню. Если количество символов всегда будет одинаковое, то перебор таблицы существенно облегчается. Тупо умножаем индекс на количество символов и сразу переходим на нужный индекс.

Последнее дополнение. Как видно, программы в этом случае как таковой нет. Есть интерпретатор таблицы.
Ответить

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