-
- Извините недалёкого - очень много написано - может кто ткнёт кто упомянул о необходимом времени реакции системы? Что-то было типа "что считать одновременным". И мне показалось что тут разговор глухого со слепым. Уж извините. Хотя почерпнул много Белый Жрец(917 знак., 02.08.2013 10:43)
- предложите свой, более оптимальный и читабельный вариант. А не теоретические Шалыты в вакууме... И кмк теорию state-machine придумал не совсем он, хотя многие молятся на его публикации - zeleny(01.08.2013 22:34 - 22:37, ссылка)
- Добавьте в моём посте после слова "тьма," слово "например". Что касается Шалыто, то он прекрасно систематизировал накопленную информацию. И таки да, подтверждает, что способов тьма. - Chum_A(03.08.2013 09:27, ссылка)
- Шалыто дал готовую технологию. Её можно брать и использовать. Альтернативы? - fk0(02.08.2013 12:49)
- Шалыто это "автоматное программирование" - технология, использующая конечные автоматы в первую очередь для документирования программ - читай для получения процентовок. "Прототрид'сы" и вариации на тему позволяют писать квазилинейный код без Vit(144 знак., 30.07.2013 10:24)
- Подскажите чайнику, что такое "процентовка"? - VVB(01.08.2013 07:19)
- Не только. Прототредсы - вполне приемлемый ответ на вопрос: "как из автомата вызвать автомат". - Скрипач(30.07.2013 13:38)
- Приемлемый ответ в виде "вложенного автомата" есть у Шалыто. А у прототредов есть проблема -- как ожидать более одного события одновременно. - fk0(30.07.2013 16:08)
- Нет в прототредах такой проблемы Скрипач(101 знак., 30.07.2013 19:35 - 19:43)
- Жечь напалмом за такой говнокод! CPU load over 9000%. Не для батарейного питания точно. И не для автомобильной тематики вообще, к слову. И чем больше CPU, тем больше такой говнокод сожрёт в амперах. Да и реактивность системы в целом ни к чёрту, fk0(43 знак., 30.07.2013 22:40)
- оглянитесь вокруг. Пока вы экономите милливатты, мега- и тераватты спокойно тратят впустую. Да и распад на солнце и в р/а элементах не остановить. - zeleny(31.07.2013 20:13)
- Думаете, нужно жахнуть? :-) - SciFi(31.07.2013 20:25, youtube)
- Не все, а только те, что могут поступить СЕЙЧАС. Впрочем, согласен. Для батарейки нужно выворачивать автоматы на изнанку и тогда прототредс идут лесом. Скрипач(154 знак., 30.07.2013 23:01)
- не нужго ничего выворачивать. В основном цикле ложимся спать. По приходу любого прерывания - просыпание и проворачивание всех задач. - zeleny(31.07.2013 22:14)
- +1. После отработки всея ложимся спать только в одном спецзаточенном месте. После прерывания рулим дальше. Да еще в зависимости от того, что прервало. А вообще, приходится тщательно продумывать взаимодействие с внешним миром. Это дает гораздо Гудвин(56 знак., 31.07.2013 22:56)
- Вот и поспорьте с fk0. - Скрипач(31.07.2013 22:34)
- не соглашайся. нормально прототридсы с батарейками дружат. для батарейки нужно крутиться вокруг менеджера питания, а не пытаться засыпать где-попало - как пёс лапку задирает. - Vit(31.07.2013 15:40)
- Признаюсь честно, я батареечных приборов не делал. Максимум - с резервированием питания. Но писать "чисто событийно" пробовал. Не понравилось. Скрипач(314 знак., 31.07.2013 16:30)
- Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг -- суть есть тонкая диверсия. Невозможно писать программы в императивном стиле. Особенно, управляющие программы. fk0(2184 знак., 31.07.2013 16:47)
- "Далее, полезли глюки неопределенных состояний"... и это главная беда. Скрипач(750 знак., 31.07.2013 17:03)
- Что за глюки "неопределенных состояний"? Может определить эти состояния и глюки пропадут? Apтём(334 знак., 31.07.2013 17:19)
- "Наизнанку - это как?" Гусары молчать! :) Скрипач(334 знак., 31.07.2013 17:30 - 17:40)
- Лучше Miro Samek-а читать - Vit(31.07.2013 22:18, ссылка)
- А можно ссылку, чё читать? А то по вашей ссылке яркие краски, бубенчики и крайне мало текста :( - Скрипач(31.07.2013 22:26)
- Переводы некоторых статей там--> - Vit(31.07.2013 22:40, ссылка)
- гуглится Vit(31.07.2013 22:34, ссылка, ссылка)
- ОС для событийного программирования? Проектирование "событийного" автомата радикально менее формализовано, чем проектирование "автомата состояний". И потому более опасно в плане редко возникающих ошибок, примеры которых я привел ранее. - Скрипач(31.07.2013 23:14 - 23:31)
- автомат без явного описания состояний это прототридсы. всё Вам опасно и редко возникающе:) - Vit(01.08.2013 00:15)
- А у вас в программе все ошибки - синтаксические, да? :) Скрипач(164 знак., 01.08.2013 00:24)
- fk0 в том, что без событийной системы строить мелкожручее, ИМХО, прав. Запускать же адресно автомат (с неформализованным, например, описанием) по событию, которое он ожидает, т.е. описано явно, у Вас почему-то оказывается сложным. Vit(1490 знак., 01.08.2013 10:06)
- Не так. Модель конечного автомата: Скрипач(294 знак., 01.08.2013 14:16 - 14:22)
- Возражение не принимается. Работа жесткой логики и программы чуток отличаются. Расставьте всего-лишь 2 входа на разные порты МК и автомат "сам,, в любой момент времени, полностью определить состояние ВСЕХ своих входных сигналов" тупо НЕ СМОЖЕТ и Vit(74 знак., 01.08.2013 16:55)
- Упускается один момент. Мы же не с логикой работаем, чтобы входные сигналы одновременно считывать. Пусть пины разбросаны хоть по десятку портов. Скрипач уже написал, сам так делаю. Собираем состояние портов в промежуточном массиве, я иногда делаю mazur(507 знак., 02.08.2013 12:48)
- Тут я могу возразить. Представьте себе автомат в виде черного ящика, и вы просто не сможете определить как Bill(317 знак., 01.08.2013 18:57)
- Возражайте. По задержкам и гонкам определяется. И расскажите, как примете 16 входов гарантированно одновременно, до того, как состояние на пине любого входа изменится, на AVR, а потом будем обобщать дальше. - Vit(01.08.2013 21:36)
- Одновременно - понятие растяжимое. Тут все зависит от конкретных условий, а не от Bill(29 знак., 02.08.2013 07:23)
- К сожалению нет. Ловить просто уровни это один гипертрофированный случай. По пинам обычно ловятся изменения. Бывает, что их порядок/количество не очень важны, но это опять же редкость. Т.к. для автомата входной сигнал это не пин, а его состояние в Vit(999 знак., 02.08.2013 08:39, ссылка)
- Все правильно, именно это я и имел в виду. Любой синхронный автомат (а именно о них и идет речь) работает Bill(1710 знак., 02.08.2013 10:41)
- C чего вдруг речь о синхронных автоматах? - Vit(02.08.2013 12:10, ссылка, ссылка)
- Вы еще раз внимательно перечитайте ваше сообщение -> - Bill(02.08.2013 12:22, ссылка)
- Вы бы внимательней перечитали сами. Лучше начиная с --> или с начала топика - Vit(02.08.2013 21:04, ссылка)
- Вы еще раз внимательно перечитайте ваше сообщение -> - Bill(02.08.2013 12:22, ссылка)
- C чего вдруг речь о синхронных автоматах? - Vit(02.08.2013 12:10, ссылка, ссылка)
- Цитата: Скрипач(767 знак., 02.08.2013 08:55)
- Все правильно, именно это я и имел в виду. Любой синхронный автомат (а именно о них и идет речь) работает Bill(1710 знак., 02.08.2013 10:41)
- К сожалению нет. Ловить просто уровни это один гипертрофированный случай. По пинам обычно ловятся изменения. Бывает, что их порядок/количество не очень важны, но это опять же редкость. Т.к. для автомата входной сигнал это не пин, а его состояние в Vit(999 знак., 02.08.2013 08:39, ссылка)
- Одновременно - понятие растяжимое. Тут все зависит от конкретных условий, а не от Bill(29 знак., 02.08.2013 07:23)
- Возражайте. По задержкам и гонкам определяется. И расскажите, как примете 16 входов гарантированно одновременно, до того, как состояние на пине любого входа изменится, на AVR, а потом будем обобщать дальше. - Vit(01.08.2013 21:36)
- Аргументов не понял, а против основной мысли возражаю. Скрипач(132 знак., 01.08.2013 16:59)
- у Вас момент растягивается как хошь - Vit(01.08.2013 17:15)
- Да. И неслабо упрощает прикладное программирование. - Скрипач(01.08.2013 17:22)
- я о "кручу-верчу-запутать хочу" - Vit(01.08.2013 21:37)
- Пох, забей :) - Скрипач(01.08.2013 23:05)
- я о "кручу-верчу-запутать хочу" - Vit(01.08.2013 21:37)
- Да. И неслабо упрощает прикладное программирование. - Скрипач(01.08.2013 17:22)
- у Вас момент растягивается как хошь - Vit(01.08.2013 17:15)
- Входами автомата могут быть: собсно дискретные входы, события, таймеры. Что приоритетнее выбирается по условиям задачи. Никакой гонки сигналов тут нет. У нас есть аварийные входы, они идут в первую очередь, очень важные события тоже в первую mazur(643 знак., 01.08.2013 15:43)
- Например, событие пришло ДО переключения автомата в состояние ожидания этого события. - Скрипач(01.08.2013 15:54)
- Значит, оно произошло ДО. Оно ведь и на пол-часа раньше ДО произойти могло. Что в этом такого? - fk0(01.08.2013 16:11)
- Мы его пропустили и ждем следующего. Что может проскочить мимо внимания, когда проектируешь алгоритм. - Скрипач(01.08.2013 16:48)
- Я уже вообще не понимаю о чём речь. Что значит "пропустили"? Утверждения мол "автоматы не работают" -- очевидно, что абсурдны. У вас какое-то недопонимание, и я даже не понимаю чего именно. - fk0(01.08.2013 17:33)
- Вы рискуете войти в рекурсию непонимания :-) - Shura(01.08.2013 17:36)
- Выход из рекурсии - оператор: "Та пох. Забей" :) - Скрипач(01.08.2013 18:40 - 18:48)
- Вы рискуете войти в рекурсию непонимания :-) - Shura(01.08.2013 17:36)
- Я уже вообще не понимаю о чём речь. Что значит "пропустили"? Утверждения мол "автоматы не работают" -- очевидно, что абсурдны. У вас какое-то недопонимание, и я даже не понимаю чего именно. - fk0(01.08.2013 17:33)
- Мы его пропустили и ждем следующего. Что может проскочить мимо внимания, когда проектируешь алгоритм. - Скрипач(01.08.2013 16:48)
- Вы где-то что-то упускаете. Скажите, как вы реализуете событийную систему. У вас обработка событий в одном месте? У меня нет таких проблем. У меня есть автоматы. В начале автомата, в зависимости от назначения, опрос входов, дискретных или mazur(665 знак., 01.08.2013 16:06)
- Значит, оно произошло ДО. Оно ведь и на пол-часа раньше ДО произойти могло. Что в этом такого? - fk0(01.08.2013 16:11)
- Например, событие пришло ДО переключения автомата в состояние ожидания этого события. - Скрипач(01.08.2013 15:54)
- Для этого предполагатся, что все события могут возникать строго последовательно, и никакой гонки уже быть не может. Порядок возникновения событий во времени придётся сохранить. И вообще не понятно, что мешает автомату самостоятельно проверить fk0(106 знак., 01.08.2013 14:50)
- "Приказом по предприятию запретить отказы и выход из строя оборудования КИПиА" :))) Это к попыткам принять в размышлениях возможность влиять на поток событий. - Скрипач(01.08.2013 15:34)
- Можно предположить, что все события не одновременны, а разделены минимальным квантом времени, большим нуля (планковское время, например). Тогда не возникает неоднозначности, если события обрабатываются строго последовательно, в порядке их fk0(281 знак., 01.08.2013 16:09)
- Лучше разделить их символом табуляции. - Скрипач(01.08.2013 17:04)
- Можно предположить, что все события не одновременны, а разделены минимальным квантом времени, большим нуля (планковское время, например). Тогда не возникает неоднозначности, если события обрабатываются строго последовательно, в порядке их fk0(281 знак., 01.08.2013 16:09)
- События и входные сигналы это вообще разные сущности. Бывают события, которые вообще невозможно зарегистрировать опросом. А есть входные сигналы, которые не инициируют сами по себе изменение состояния автомата, но могут влиять на переходные =AlexD=(45 знак., 01.08.2013 14:57)
- Подразумевалось, что (изменение) входных сигналов вызывают события. - fk0(01.08.2013 16:10)
- это узкий частный случай - =AlexD=(01.08.2013 21:00)
- +1 - Vit(01.08.2013 16:32)
- Не у Скрипача: "по Шатыло" и "не по Шатыло". Можно делать сколь угодно сложно-комбинированные системы, нельзя скомбинировать только наличие методики и ее отсутствие :) - Скрипач(01.08.2013 15:36 - 15:38)
- Методика Шалыто вполне полная. А вот у вас как раз отсутствие методики. Когда не только программы пишутся программистом по наитию, но точно также выдумывается из головы алгоритм управления, зачастую противоречивый и не полный. Автоматы нужны в fk0(273 знак., 01.08.2013 16:14)
- Не смущает. Скрипач(250 знак., 01.08.2013 16:53)
- У Шалыто оно уже event driven -- автомат получает события как аргумент функции. И менять ничего-то не нужно. Если речь про то, что при вычислении условий перехода вызываются какие-либо функции (`x') и проверяют входы, например, то ничто не мешат fk0(680 знак., 01.08.2013 17:42)
- То, что "вы" называете "event driven" нечто полностью этому противоположное. Цитата: "факт события использовать только для запуска автомата, в котором уже игнорировать событие и проанализировать входы напрямую". Скрипач(238 знак., 01.08.2013 18:39)
- Пример события из ОС: поступили данные в сокет (проявляется в WaitForMultipleEvents() или в select()). Но какие данные -- не узнаешь, пока не прочитаешь. Также и здесь. И таки да, у всех всё работает, кроме Скрипача, который несёт какую-то чушь fk0(697 знак., 01.08.2013 22:28, ссылка)
- И где это я говорю об "одновременности"? Если сами с собой разговариваете, то хотябы на меня не ссылайтесь, бля. - Скрипач(01.08.2013 23:02)
- перечитывая классиков:) забил:) - Vit(02.08.2013 00:16, ссылка)
- По ссылке даже слово "одновременно" нету. Скрипач(490 знак., 02.08.2013 08:38)
- Событие может наступить "не тогда, когда ждали", что под этим подразумевали? Вы сейчас хоть на это конкретные примеры приведите. Хотя нет, скорее интересует как вы реализуете обработку входных сигналов, чем бы они не были. Пример кода в студию, mazur(71 знак., 02.08.2013 13:10)
- Сахар лежит в баночке из-под кофе, на которой написано "соль"(С) - Vit(02.08.2013 08:42)
- По ссылке даже слово "одновременно" нету. Скрипач(490 знак., 02.08.2013 08:38)
- перечитывая классиков:) забил:) - Vit(02.08.2013 00:16, ссылка)
- И где это я говорю об "одновременности"? Если сами с собой разговариваете, то хотябы на меня не ссылайтесь, бля. - Скрипач(01.08.2013 23:02)
- в кононичЬной:) Vit(153 знак., 01.08.2013 21:50)
- Пример события из ОС: поступили данные в сокет (проявляется в WaitForMultipleEvents() или в select()). Но какие данные -- не узнаешь, пока не прочитаешь. Также и здесь. И таки да, у всех всё работает, кроме Скрипача, который несёт какую-то чушь fk0(697 знак., 01.08.2013 22:28, ссылка)
- То, что "вы" называете "event driven" нечто полностью этому противоположное. Цитата: "факт события использовать только для запуска автомата, в котором уже игнорировать событие и проанализировать входы напрямую". Скрипач(238 знак., 01.08.2013 18:39)
- У Шалыто оно уже event driven -- автомат получает события как аргумент функции. И менять ничего-то не нужно. Если речь про то, что при вычислении условий перехода вызываются какие-либо функции (`x') и проверяют входы, например, то ничто не мешат fk0(680 знак., 01.08.2013 17:42)
- Не смущает. Скрипач(250 знак., 01.08.2013 16:53)
- Методика Шалыто вполне полная. А вот у вас как раз отсутствие методики. Когда не только программы пишутся программистом по наитию, но точно также выдумывается из головы алгоритм управления, зачастую противоречивый и не полный. Автоматы нужны в fk0(273 знак., 01.08.2013 16:14)
- Подразумевалось, что (изменение) входных сигналов вызывают события. - fk0(01.08.2013 16:10)
- "Приказом по предприятию запретить отказы и выход из строя оборудования КИПиА" :))) Это к попыткам принять в размышлениях возможность влиять на поток событий. - Скрипач(01.08.2013 15:34)
- Возражение не принимается. Работа жесткой логики и программы чуток отличаются. Расставьте всего-лишь 2 входа на разные порты МК и автомат "сам,, в любой момент времени, полностью определить состояние ВСЕХ своих входных сигналов" тупо НЕ СМОЖЕТ и Vit(74 знак., 01.08.2013 16:55)
- Не так. Модель конечного автомата: Скрипач(294 знак., 01.08.2013 14:16 - 14:22)
- fk0 в том, что без событийной системы строить мелкожручее, ИМХО, прав. Запускать же адресно автомат (с неформализованным, например, описанием) по событию, которое он ожидает, т.е. описано явно, у Вас почему-то оказывается сложным. Vit(1490 знак., 01.08.2013 10:06)
- А у вас в программе все ошибки - синтаксические, да? :) Скрипач(164 знак., 01.08.2013 00:24)
- я предлагал читать - Vit(01.08.2013 00:10)
- Practical UML? Качаю. У меня сейчас и-нет "походный". Медленно. - Скрипач(01.08.2013 00:29)
- там её приаттачил - Vit(01.08.2013 10:10, ссылка)
- Я видел. Начал просматривать, но Скрипач(76 знак., 01.08.2013 14:24)
- там её приаттачил - Vit(01.08.2013 10:10, ссылка)
- Practical UML? Качаю. У меня сейчас и-нет "походный". Медленно. - Скрипач(01.08.2013 00:29)
- автомат без явного описания состояний это прототридсы. всё Вам опасно и редко возникающе:) - Vit(01.08.2013 00:15)
- ОС для событийного программирования? Проектирование "событийного" автомата радикально менее формализовано, чем проектирование "автомата состояний". И потому более опасно в плане редко возникающих ошибок, примеры которых я привел ранее. - Скрипач(31.07.2013 23:14 - 23:31)
- А можно ссылку, чё читать? А то по вашей ссылке яркие краски, бубенчики и крайне мало текста :( - Скрипач(31.07.2013 22:26)
- Лучше Miro Samek-а читать - Vit(31.07.2013 22:18, ссылка)
- "Наизнанку - это как?" Гусары молчать! :) Скрипач(334 знак., 31.07.2013 17:30 - 17:40)
- Что за глюки "неопределенных состояний"? Может определить эти состояния и глюки пропадут? Apтём(334 знак., 31.07.2013 17:19)
- перевожу: "RTOS рулез" - Mahagam(31.07.2013 16:50)
- На мой взгляд RTOS нужна только для вытесняющей многозадачности в изолированных процессах. Потоки вообще не нужны. Вместо них нужен механизм событийно-ориентированного программирования (в виде C-библиотеки, например), вроде того, что делает fk0(30 знак., 31.07.2013 16:55)
- тут походу RTOS - синоним вытесняющей многозадачности. Mahagam(346 знак., 31.07.2013 16:59)
- Роскошно живете, товарищ! :) - Гудвин(31.07.2013 22:26)
- как ни странно, при кооперативке та же фигня:) - Vit(31.07.2013 22:19)
- тут походу RTOS - синоним вытесняющей многозадачности. Mahagam(346 знак., 31.07.2013 16:59)
- На мой взгляд RTOS нужна только для вытесняющей многозадачности в изолированных процессах. Потоки вообще не нужны. Вместо них нужен механизм событийно-ориентированного программирования (в виде C-библиотеки, например), вроде того, что делает fk0(30 знак., 31.07.2013 16:55)
- "Далее, полезли глюки неопределенных состояний"... и это главная беда. Скрипач(750 знак., 31.07.2013 17:03)
- Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг -- суть есть тонкая диверсия. Невозможно писать программы в императивном стиле. Особенно, управляющие программы. fk0(2184 знак., 31.07.2013 16:47)
- Признаюсь честно, я батареечных приборов не делал. Максимум - с резервированием питания. Но писать "чисто событийно" пробовал. Не понравилось. Скрипач(314 знак., 31.07.2013 16:30)
- не нужго ничего выворачивать. В основном цикле ложимся спать. По приходу любого прерывания - просыпание и проворачивание всех задач. - zeleny(31.07.2013 22:14)
- Религиозный фанатик детектед! Ну да, фсе процы фсегда на батарейках, а если нет - сжечь! И про реактивность - тоже лажа: в огромном множестве задач такой подход отлично работает. - SciFi(30.07.2013 22:46)
- Он успешно работает в маленьких проектах и без особых требований к потреблению. - fk0(30.07.2013 22:55)
- Я бы сказал что как раз на БОЛЬШИХ системах такой подход работает лучше, чем событийно-ориентированное программирование. Скрипач(125 знак., 30.07.2013 23:15)
- В больших системах множество независимых параллельных процессов. С разными требованиями к времени отклика. И эта тупая проверка условий в каждом цикле сжирает слишком много cpu, чтобы время отклика стало неприемлимо большим, даже если все условия fk0(64 знак., 31.07.2013 00:50)
- есть ресурс. вычислительная мощность. такой цикл автоматически перераспределяет этот ресурс. подразумевается что евентс по прерываниям обрабатываются. больше нагрузка на обработчиках - меньше работает основной цикл. в основной цикл можно заложить Белый Жрец(220 знак., 31.07.2013 16:36)
- Эта "тупая проверка" сжигает так мало, что с экономии на переключении контекстов вытесняющей ОС, инфраструктуры "запуска-остановки задач" и "отправки сообщений" еще и остается :) - Скрипач(31.07.2013 00:57)
- В больших системах множество независимых параллельных процессов. С разными требованиями к времени отклика. И эта тупая проверка условий в каждом цикле сжирает слишком много cpu, чтобы время отклика стало неприемлимо большим, даже если все условия fk0(64 знак., 31.07.2013 00:50)
- Ну на БОЛЬШИХ !Ё! БАТАРЕЕЧНЫХ он точно не работает ;о) - Скрипач(30.07.2013 23:11)
- Коих (этих проектов) сильно больше половины, я бы сказал. Такшта не надо излишне драматизировать. - SciFi(30.07.2013 23:00)
- Я бы сказал что как раз на БОЛЬШИХ системах такой подход работает лучше, чем событийно-ориентированное программирование. Скрипач(125 знак., 30.07.2013 23:15)
- Он успешно работает в маленьких проектах и без особых требований к потреблению. - fk0(30.07.2013 22:55)
- оглянитесь вокруг. Пока вы экономите милливатты, мега- и тераватты спокойно тратят впустую. Да и распад на солнце и в р/а элементах не остановить. - zeleny(31.07.2013 20:13)
- Жечь напалмом за такой говнокод! CPU load over 9000%. Не для батарейного питания точно. И не для автомобильной тематики вообще, к слову. И чем больше CPU, тем больше такой говнокод сожрёт в амперах. Да и реактивность системы в целом ни к чёрту, fk0(43 знак., 30.07.2013 22:40)
- Ткните пальцем на "вложенный автомат у Шатыло", не дайте помереть необразованным. - Скрипач(30.07.2013 19:38)
- по первой ссылке - книга, в которой есть разбор по вложенным автоматам. по второй - работа, на которую авторы книги ссылаются, как на первичное определение вложенного автомата. - Д.ARMоед(31.07.2013 00:17 - 00:52, ссылка, ссылка)
- Отлично! Я, в принципе, ожидал 100% совпадения, но оно таки 100% совпадение :) - Скрипач(31.07.2013 00:51)
- На softcraft.ru есть статьи, из наиболее старых, где в целом описывается технология. Там упоминается. - fk0(30.07.2013 22:42)
- по первой ссылке - книга, в которой есть разбор по вложенным автоматам. по второй - работа, на которую авторы книги ссылаются, как на первичное определение вложенного автомата. - Д.ARMоед(31.07.2013 00:17 - 00:52, ссылка, ссылка)
- PT_WAIT_UNTIL(&pt, event_a() && event_b()); - SciFi(30.07.2013 17:14)
- && должно вычисляться каждый раз. Проблема protothreads -- отсутствие "планировщика" понимающего, что если произошёл event_a, то нужно запустить поток такой-то. См. ответ Скрипачу. Я не прав таки. В protothreads множествнное ожидание не проблема. fk0(222 знак., 30.07.2013 22:44)
- прототридсы просто совсем не планировщик - Vit(31.07.2013 10:03)
- Кстати, да, нахлобучить планировщик поверх protothreads должно быть совсем не сложно. - SciFi(31.07.2013 10:11)
- так и делаю. а переменную состояния объявляю внутри функции - Vit(31.07.2013 11:10)
- Кстати, да, нахлобучить планировщик поверх protothreads должно быть совсем не сложно. - SciFi(31.07.2013 10:11)
- А чО такое event? Не подскажешь неразумным? - Гудвин(30.07.2013 23:08)
- Это когда кто-то говорит планировщику, что он наступил. И планировщик начинает запускать процессы ожидающие оного event. - fk0(31.07.2013 00:48)
- Бу-га-га... Я как раз об этом: этот "кто-то" должен, как минимум, поместить событие в очередь, планировщик должен выполнить извлечь из очереди, провести "тупую проверку" кучи событий, запустить процессы. Накладные расходы на переключение Гудвин(119 знак., 31.07.2013 13:58, ссылка)
- Вот эти накладные расходы, они меньше, чем тупая проверка условий в цикле. Потому, что они возникают только при возникновении события, а не существуют постоянно в каждом цикле. - fk0(31.07.2013 14:02)
- Вот я и просил, чтобы ты подробнее разъебеснил, что есть "событие" применительно к железке с малыми ресурсами в твоей интерпретации. - Гудвин(31.07.2013 14:22)
- Мы (!под свой круг задач!) реализовали так - в main крутится диспетчер (да, это big loop без всякого вытеснения, ибо не требуется), просматривающий приоритетные очереди. Источники событий - обработчики прерываний, в т.ч. и от таймера(ов). Источник Chum_A(348 знак., 31.07.2013 18:34)
- Цитата: "Теоретически диспетчер мог бы при пустых очередях скомандовать в sleep, но не пробовали за неактуальностью". Спасибо, отличная шутка про батареечные решения :о) - Скрипач(31.07.2013 18:38)
- Именно так, похожим образом, и делается... - fk0(31.07.2013 20:00)
- Ни секунды не сомневаюсь :-| Скрипач(219 знак., 31.07.2013 20:50 - 20:54)
- Я же сказал, частный случай. Вот я включаю контактор (380В/100А), обмотка от 30В кушает ~300 мА, а таких (или чуть пожиже) десятка два и ещё всякого добра (например, ШИМ 30В/30А), ну и нафига мне экономить электроэнергию. - Chum_A(01.08.2013 10:56)
- Я сам использую big loop со sleep'ом... - fk0(31.07.2013 21:24)
- Ни секунды не сомневаюсь :-| Скрипач(219 знак., 31.07.2013 20:50 - 20:54)
- Именно так, похожим образом, и делается... - fk0(31.07.2013 20:00)
- Цитата: "Теоретически диспетчер мог бы при пустых очередях скомандовать в sleep, но не пробовали за неактуальностью". Спасибо, отличная шутка про батареечные решения :о) - Скрипач(31.07.2013 18:38)
- Какая разница, какая железка? - fk0(31.07.2013 14:24)
- Ну-ну... - Гудвин(31.07.2013 14:36)
- Нуну. Не надо рассказывать, мол контроллеры программируются вот так-то, а я дурак, пришёл из мира ПК, ассемблера не знаю. Я по крайней мере видел с двух сторон как оно и могу судить. - fk0(31.07.2013 14:46)
- Ну-ну. Разведем пальцы веером, хвост павлином... Нах аргументировать. Если че, я так вообще ни сколько не программист. Хотелось конкретного примера - так сказать, для постижения... - Гудвин(31.07.2013 14:54)
- Примера чего? Научись чётко формулировать мысли. Мои тезисы выше по треду следующие: 1) Big loop (protothreads) не эффективен, особенно для больших программ, ввиду большой вычислительной сложности бесконечного вычисления всех условий, RTOS и/или fk0(466 знак., 31.07.2013 15:02)
- 1) не нужно, мля, отождествлять биглуп и прототридсы, и тогда не будет левых рассказок об неэффективности. 2) коронный зал у нас справа - Vit(31.07.2013 15:36)
- 1) таки это одно и то же. loop там есть тот самый. - fk0(31.07.2013 15:53)
- Значит у кого-то таки одно и то же, только это обобщение ошибочно. Учитематчастьнах - Vit(31.07.2013 22:27)
- 1) таки это одно и то же. loop там есть тот самый. - fk0(31.07.2013 15:53)
- 1) не нужно, мля, отождествлять биглуп и прототридсы, и тогда не будет левых рассказок об неэффективности. 2) коронный зал у нас справа - Vit(31.07.2013 15:36)
- Примера чего? Научись чётко формулировать мысли. Мои тезисы выше по треду следующие: 1) Big loop (protothreads) не эффективен, особенно для больших программ, ввиду большой вычислительной сложности бесконечного вычисления всех условий, RTOS и/или fk0(466 знак., 31.07.2013 15:02)
- Ну-ну. Разведем пальцы веером, хвост павлином... Нах аргументировать. Если че, я так вообще ни сколько не программист. Хотелось конкретного примера - так сказать, для постижения... - Гудвин(31.07.2013 14:54)
- Нуну. Не надо рассказывать, мол контроллеры программируются вот так-то, а я дурак, пришёл из мира ПК, ассемблера не знаю. Я по крайней мере видел с двух сторон как оно и могу судить. - fk0(31.07.2013 14:46)
- Ну-ну... - Гудвин(31.07.2013 14:36)
- Мы (!под свой круг задач!) реализовали так - в main крутится диспетчер (да, это big loop без всякого вытеснения, ибо не требуется), просматривающий приоритетные очереди. Источники событий - обработчики прерываний, в т.ч. и от таймера(ов). Источник Chum_A(348 знак., 31.07.2013 18:34)
- Вот я и просил, чтобы ты подробнее разъебеснил, что есть "событие" применительно к железке с малыми ресурсами в твоей интерпретации. - Гудвин(31.07.2013 14:22)
- Вот эти накладные расходы, они меньше, чем тупая проверка условий в цикле. Потому, что они возникают только при возникновении события, а не существуют постоянно в каждом цикле. - fk0(31.07.2013 14:02)
- Бу-га-га... Я как раз об этом: этот "кто-то" должен, как минимум, поместить событие в очередь, планировщик должен выполнить извлечь из очереди, провести "тупую проверку" кучи событий, запустить процессы. Накладные расходы на переключение Гудвин(119 знак., 31.07.2013 13:58, ссылка)
- Это когда кто-то говорит планировщику, что он наступил. И планировщик начинает запускать процессы ожидающие оного event. - fk0(31.07.2013 00:48)
- Вас гринпис подкупил? Зелёные процы, батарейное питание и фсё такое? Ви таки удивитесь, но очень многие запитываются от розетки. И банальный кондиционер сожрёт столько же, сколько 1000 ваших зелёных девайсов :-) - SciFi(30.07.2013 22:49)
- В автомобильной тематике актуально, сколько проживёт машина на стоянке с твоим прибором, 2 недели до полного разряда или успешно заведётся через месяц, например. - fk0(30.07.2013 22:57)
- Если ток потребления - 10% от саморазряда батареи, то пофиг. Подозреваю, что уложиться можно без особого труда. - SciFi(30.07.2013 23:02)
- 5% в мес от ~50А*Ч -- 3.4мА (саморазряд). 0.34mA -- сделай. Только проц при 100% cpu load съест минимум 20мА, и dc/dc с кпд сильно ниже 50% (только Iq до 5mA), и ещё прочие накладные расходы. Я тебе практический пример приведу. pic18 -- ~1mA при fk0(681 знак., 31.07.2013 00:47)
- что бы не въехать в 340 uA в дежурном режиме на любом мейнстримовом контроллере, это нужно очень "постараться". Должны быть какие то дополнительные, не озвученные ограничения. - Nikolay801_(31.07.2013 09:45)
- Элементарно. PLL + генератор на кварце, плюс периферия -- уже сходу более 4мА (3.3v). Потом dc/dc с малым собственным потреблением и большим выходным током (до единиц ампер) -- вообще фантастика, с приемлемым КПД при таких токах -- тоже. И таки fk0(372 знак., 31.07.2013 11:11)
- половина проблем пропадает если поставить эмэспе вместо некрочипа - Nikolay801_(31.07.2013 11:59)
- Для MSP430 нет возможности писать ПО более 64к. С бесплатным компилятором. Да и ценник на сами чипы не гуманный. А самое главное -- мальчиков с мамой, папой, квартиркой и знанием MSP430 -- нет. - fk0(31.07.2013 12:15)
- есть у мсп и возможность влить более 64к и чипы дешовые, тока не одновременно, да и мальчики с мамой-папой-квартирой под них найдуться. - Nikolay801_(31.07.2013 13:45)
- у MSP430 узкая ниша сверхэкономичных приложений. а там рееедко требуется более 64к. - Mahagam(31.07.2013 12:21)
- Сверхэкономичные -- не требующие высоких затрат на программирование что-ли? А за что я зарплату получать буду? Точно, остаётся только большое программирование. - fk0(31.07.2013 12:28)
- только пользователи MSP не убеждены как-то. постоянно на нехватку памяти жалуются и в жизни и на форумах, глупые - Snaky(31.07.2013 12:22)
- Пользователям MSP430 обычно не хватает ОЗУ, а не памяти вообще. Flash-памяти как раз хватает всегда. - rezident(31.07.2013 16:36)
- Меня всегда волновало - из каких высших маркетинговых соображений они ставят так мало ОЗУ? Или это результат технологических ограничений - в 6 транзюках ОЗУ утечки больше, чем в других компонентах? - Evgeny_CD(31.07.2013 22:38)
- General как то вызывался поинтересоваться у самих авторов. Ждем'c ;) - Гудвин(31.07.2013 22:42)
- Там застой. Они считают что это станет возможным с другими технологиями памяти, например FRAM. А вообще, есть же EFM. - General(31.07.2013 22:54)
- Уже обсуждали. МК от EnegryMicro по совокупности характеристик и периферии не заменяет полностью MSP430 . - rezident(31.07.2013 23:09)
- Ну я же обхожусь. Использую те и другие. Приведите пример использования. - General(31.07.2013 23:21)
- Вроде этот топик => - rezident(31.07.2013 23:25, ссылка)
- Ну я же обхожусь. Использую те и другие. Приведите пример использования. - General(31.07.2013 23:21)
- Уже обсуждали. МК от EnegryMicro по совокупности характеристик и периферии не заменяет полностью MSP430 . - rezident(31.07.2013 23:09)
- Там застой. Они считают что это станет возможным с другими технологиями памяти, например FRAM. А вообще, есть же EFM. - General(31.07.2013 22:54)
- General как то вызывался поинтересоваться у самих авторов. Ждем'c ;) - Гудвин(31.07.2013 22:42)
- Меня всегда волновало - из каких высших маркетинговых соображений они ставят так мало ОЗУ? Или это результат технологических ограничений - в 6 транзюках ОЗУ утечки больше, чем в других компонентах? - Evgeny_CD(31.07.2013 22:38)
- Скорее всего, стеки всяких зигби, либы/шрифты для графических дисплеев (ЖКИ) много весят - amusin(31.07.2013 12:26)
- Пользователям MSP430 обычно не хватает ОЗУ, а не памяти вообще. Flash-памяти как раз хватает всегда. - rezident(31.07.2013 16:36)
- Для MSP430 нет возможности писать ПО более 64к. С бесплатным компилятором. Да и ценник на сами чипы не гуманный. А самое главное -- мальчиков с мамой, папой, квартиркой и знанием MSP430 -- нет. - fk0(31.07.2013 12:15)
- половина проблем пропадает если поставить эмэспе вместо некрочипа - Nikolay801_(31.07.2013 11:59)
- Элементарно. PLL + генератор на кварце, плюс периферия -- уже сходу более 4мА (3.3v). Потом dc/dc с малым собственным потреблением и большим выходным током (до единиц ампер) -- вообще фантастика, с приемлемым КПД при таких токах -- тоже. И таки fk0(372 знак., 31.07.2013 11:11)
- что бы не въехать в 340 uA в дежурном режиме на любом мейнстримовом контроллере, это нужно очень "постараться". Должны быть какие то дополнительные, не озвученные ограничения. - Nikolay801_(31.07.2013 09:45)
- 5% в мес от ~50А*Ч -- 3.4мА (саморазряд). 0.34mA -- сделай. Только проц при 100% cpu load съест минимум 20мА, и dc/dc с кпд сильно ниже 50% (только Iq до 5mA), и ещё прочие накладные расходы. Я тебе практический пример приведу. pic18 -- ~1mA при fk0(681 знак., 31.07.2013 00:47)
- Если ток потребления - 10% от саморазряда батареи, то пофиг. Подозреваю, что уложиться можно без особого труда. - SciFi(30.07.2013 23:02)
- В автомобильной тематике актуально, сколько проживёт машина на стоянке с твоим прибором, 2 недели до полного разряда или успешно заведётся через месяц, например. - fk0(30.07.2013 22:57)
- прототридсы просто совсем не планировщик - Vit(31.07.2013 10:03)
- && должно вычисляться каждый раз. Проблема protothreads -- отсутствие "планировщика" понимающего, что если произошёл event_a, то нужно запустить поток такой-то. См. ответ Скрипачу. Я не прав таки. В protothreads множествнное ожидание не проблема. fk0(222 знак., 30.07.2013 22:44)
- Нет в прототредах такой проблемы Скрипач(101 знак., 30.07.2013 19:35 - 19:43)
- Приемлемый ответ в виде "вложенного автомата" есть у Шалыто. А у прототредов есть проблема -- как ожидать более одного события одновременно. - fk0(30.07.2013 16:08)
- странно, даже на сайте их кафедры есть работы, в которых народ из диаграммы состояний автомата генерит компилируемый код.. Причём тут процентовки? - Д.ARMоед(30.07.2013 13:09 - 13:11, ссылка)
- Где вы видели конкретные результаты? Насколько я понял, пока все это на стадии разработки. Уже давно написано, что вроде как есть визуализация графиков, только такой программы так и не нашел. Чтобы можно было нарисовать алгоритм и проиграть его. - mazur(30.07.2013 16:12)
- конкретно по Шалыто - всё давно разработано и доступно через сайт их кафедры. продукты называются UNIMOD(посложнее) и Visio2SWITCH(попроще). - Д.ARMоед(30.07.2013 17:15, ссылка, ссылка)
- Приветствую. vesellov(988 знак., 14.03.2015 08:10 - 08:16, ссылка, картинка)
- Здравствуйте! Спасибо за информацию. Инструменты с автоматической генерацией кода из модельного представления просто обязаны жить! Д.ARMоед(222 знак., 17.03.2015 09:28)
- Благодарю!. Рад найти единомышленников. vesellov(185 знак., 17.03.2015 14:22, ссылка, картинка)
- Здравствуйте! Спасибо за информацию. Инструменты с автоматической генерацией кода из модельного представления просто обязаны жить! Д.ARMоед(222 знак., 17.03.2015 09:28)
- свежачок. visio2python - Draw your Program. из той же конторы. - Д.ARMоед(30.07.2013 18:09, ссылка)
- Приветствую. vesellov(988 знак., 14.03.2015 08:10 - 08:16, ссылка, картинка)
- Вполне себе результаты. Да, "визуализации графиков" нет, но кодогенератор есть. Для сгенерированного кода можно написать тесты. "Визуализация графиков" практически не нужна, т.к. для "ветвистых графиков" всё равно придётся писать тесты. А вот Chum_A(136 знак., 30.07.2013 16:39, ссылка)
- Так вроде же есть "бесплатный ВИЖУАЛСТЕЙТ" на базе еклипсы. Если я правильно понял о чем вы. - ig_z(30.07.2013 17:21)
- Я не совсем про "ВИЖУАЛСТЕЙТ". ИМХО в Драконе найден очень удачный способ графического представления автоматов, дык я про Дракон-плагин. З.Ы. мой штатный программист имеет совершенно другое мнение: "нафига мне все эти ваши (далее по списку включая Chum_A(68 знак., 30.07.2013 17:45)
- Я сейчас работаю в проекте, где до меня лет 6 такие "штатные" и в целом и по отдельности неплохие люди и программеры напейсали транспортный секурный уровень. Со свичами. немереным кол-вом глобальных переменных, замешав в одну огромную функцию все ig_z(584 знак., 30.07.2013 19:04)
- YAKINDU Statechart Tools (SCT) -> вот так, по первому взгляду, смотрится просто как дрим тул. Спасибо!!!! - Evgeny_CD(30.07.2013 20:25, ссылка)
- Спасибо за наводку на yakindu. А между какими инструментами выбирали? В свое время использовал немного ArgoUML, но это детский лепет - amusin(30.07.2013 19:29)
- Я сейчас работаю в проекте, где до меня лет 6 такие "штатные" и в целом и по отдельности неплохие люди и программеры напейсали транспортный секурный уровень. Со свичами. немереным кол-вом глобальных переменных, замешав в одну огромную функцию все ig_z(584 знак., 30.07.2013 19:04)
- Иар-овская была первая на слуху. - Гудвин(30.07.2013 17:24, ссылка)
- Я не совсем про "ВИЖУАЛСТЕЙТ". ИМХО в Драконе найден очень удачный способ графического представления автоматов, дык я про Дракон-плагин. З.Ы. мой штатный программист имеет совершенно другое мнение: "нафига мне все эти ваши (далее по списку включая Chum_A(68 знак., 30.07.2013 17:45)
- Так вроде же есть "бесплатный ВИЖУАЛСТЕЙТ" на базе еклипсы. Если я правильно понял о чем вы. - ig_z(30.07.2013 17:21)
- конкретно по Шалыто - всё давно разработано и доступно через сайт их кафедры. продукты называются UNIMOD(посложнее) и Visio2SWITCH(попроще). - Д.ARMоед(30.07.2013 17:15, ссылка, ссылка)
- Где вы видели конкретные результаты? Насколько я понял, пока все это на стадии разработки. Уже давно написано, что вроде как есть визуализация графиков, только такой программы так и не нашел. Чтобы можно было нарисовать алгоритм и проиграть его. - mazur(30.07.2013 16:12)