-
- Приемлемый ответ в виде "вложенного автомата" есть у Шалыто. А у прототредов есть проблема -- как ожидать более одного события одновременно. - fk0легенда(30.07.2013 16:08)
- Нет в прототредах такой проблемы Cкpипaчпророк(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)
- Не все, а только те, что могут поступить СЕЙЧАС. Впрочем, согласен. Для батарейки нужно выворачивать автоматы на изнанку и тогда прототредс идут лесом. Cкpипaчпророк(154 знак., 30.07.2013 23:01)
- не нужго ничего выворачивать. В основном цикле ложимся спать. По приходу любого прерывания - просыпание и проворачивание всех задач. - zeleny(31.07.2013 22:14)
- +1. После отработки всея ложимся спать только в одном спецзаточенном месте. После прерывания рулим дальше. Да еще в зависимости от того, что прервало. А вообще, приходится тщательно продумывать взаимодействие с внешним миром. Это дает гораздо Гyдвинволшебник(56 знак., 31.07.2013 22:56)
- Вот и поспорьте с fk0. - Cкpипaчпророк(31.07.2013 22:34)
- не соглашайся. нормально прототридсы с батарейками дружат. для батарейки нужно крутиться вокруг менеджера питания, а не пытаться засыпать где-попало - как пёс лапку задирает. - Vit(31.07.2013 15:40)
- Признаюсь честно, я батареечных приборов не делал. Максимум - с резервированием питания. Но писать "чисто событийно" пробовал. Не понравилось. Cкpипaчпророк(314 знак., 31.07.2013 16:30)
- Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг -- суть есть тонкая диверсия. Невозможно писать программы в императивном стиле. Особенно, управляющие программы. fk0легенда(2184 знак., 31.07.2013 16:47)
- "Далее, полезли глюки неопределенных состояний"... и это главная беда. Cкpипaчпророк(750 знак., 31.07.2013 17:03)
- Что за глюки "неопределенных состояний"? Может определить эти состояния и глюки пропадут? Apтём(334 знак., 31.07.2013 17:19)
- "Наизнанку - это как?" Гусары молчать! :) Cкpипaчпророк(334 знак., 31.07.2013 17:30 - 17:40)
- Лучше Miro Samek-а читать - Vit(31.07.2013 22:18, ссылка)
- А можно ссылку, чё читать? А то по вашей ссылке яркие краски, бубенчики и крайне мало текста :( - Cкpипaчпророк(31.07.2013 22:26)
- Переводы некоторых статей там--> - Vit(31.07.2013 22:40, ссылка)
- гуглится Vit(31.07.2013 22:34, ссылка, ссылка)
- ОС для событийного программирования? Проектирование "событийного" автомата радикально менее формализовано, чем проектирование "автомата состояний". И потому более опасно в плане редко возникающих ошибок, примеры которых я привел ранее. - Cкpипaчпророк(31.07.2013 23:14 - 23:31)
- автомат без явного описания состояний это прототридсы. всё Вам опасно и редко возникающе:) - Vit(01.08.2013 00:15)
- А у вас в программе все ошибки - синтаксические, да? :) Cкpипaчпророк(164 знак., 01.08.2013 00:24)
- fk0 в том, что без событийной системы строить мелкожручее, ИМХО, прав. Запускать же адресно автомат (с неформализованным, например, описанием) по событию, которое он ожидает, т.е. описано явно, у Вас почему-то оказывается сложным. Vit(1490 знак., 01.08.2013 10:06)
- Не так. Модель конечного автомата: Cкpипaчпророк(294 знак., 01.08.2013 14:16 - 14:22)
- Возражение не принимается. Работа жесткой логики и программы чуток отличаются. Расставьте всего-лишь 2 входа на разные порты МК и автомат "сам,, в любой момент времени, полностью определить состояние ВСЕХ своих входных сигналов" тупо НЕ СМОЖЕТ и Vit(74 знак., 01.08.2013 16:55)
- Тут я могу возразить. Представьте себе автомат в виде черного ящика, и вы просто не сможете определить как 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, ссылка, ссылка)
- Цитата: Cкpипaчпророк(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)
- Аргументов не понял, а против основной мысли возражаю. Cкpипaчпророк(132 знак., 01.08.2013 16:59)
- у Вас момент растягивается как хошь - Vit(01.08.2013 17:15)
- Да. И неслабо упрощает прикладное программирование. - Cкpипaчпророк(01.08.2013 17:22)
- я о "кручу-верчу-запутать хочу" - Vit(01.08.2013 21:37)
- Пох, забей :) - Cкpипaчпророк(01.08.2013 23:05)
- я о "кручу-верчу-запутать хочу" - Vit(01.08.2013 21:37)
- Да. И неслабо упрощает прикладное программирование. - Cкpипaчпророк(01.08.2013 17:22)
- у Вас момент растягивается как хошь - Vit(01.08.2013 17:15)
- Тут я могу возразить. Представьте себе автомат в виде черного ящика, и вы просто не сможете определить как Bill(317 знак., 01.08.2013 18:57)
- Для этого предполагатся, что все события могут возникать строго последовательно, и никакой гонки уже быть не может. Порядок возникновения событий во времени придётся сохранить. И вообще не понятно, что мешает автомату самостоятельно проверить fk0легенда(106 знак., 01.08.2013 14:50)
- "Приказом по предприятию запретить отказы и выход из строя оборудования КИПиА" :))) Это к попыткам принять в размышлениях возможность влиять на поток событий. - Cкpипaчпророк(01.08.2013 15:34)
- Можно предположить, что все события не одновременны, а разделены минимальным квантом времени, большим нуля (планковское время, например). Тогда не возникает неоднозначности, если события обрабатываются строго последовательно, в порядке их fk0легенда(281 знак., 01.08.2013 16:09)
- Лучше разделить их символом табуляции. - Cкpипaчпророк(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)
- Не у Скрипача: "по Шатыло" и "не по Шатыло". Можно делать сколь угодно сложно-комбинированные системы, нельзя скомбинировать только наличие методики и ее отсутствие :) - Cкpипaчпророк(01.08.2013 15:36 - 15:38)
- Методика Шалыто вполне полная. А вот у вас как раз отсутствие методики. Когда не только программы пишутся программистом по наитию, но точно также выдумывается из головы алгоритм управления, зачастую противоречивый и не полный. Автоматы нужны в fk0легенда(273 знак., 01.08.2013 16:14)
- Не смущает. Cкpипaчпророк(250 знак., 01.08.2013 16:53)
- У Шалыто оно уже event driven -- автомат получает события как аргумент функции. И менять ничего-то не нужно. Если речь про то, что при вычислении условий перехода вызываются какие-либо функции (`x') и проверяют входы, например, то ничто не мешат fk0легенда(680 знак., 01.08.2013 17:42)
- То, что "вы" называете "event driven" нечто полностью этому противоположное. Цитата: "факт события использовать только для запуска автомата, в котором уже игнорировать событие и проанализировать входы напрямую". Cкpипaчпророк(238 знак., 01.08.2013 18:39)
- Пример события из ОС: поступили данные в сокет (проявляется в WaitForMultipleEvents() или в select()). Но какие данные -- не узнаешь, пока не прочитаешь. Также и здесь. И таки да, у всех всё работает, кроме Скрипача, который несёт какую-то чушь fk0легенда(697 знак., 01.08.2013 22:28, ссылка)
- И где это я говорю об "одновременности"? Если сами с собой разговариваете, то хотябы на меня не ссылайтесь, бля. - Cкpипaчпророк(01.08.2013 23:02)
- перечитывая классиков:) забил:) - Vit(02.08.2013 00:16, ссылка)
- По ссылке даже слово "одновременно" нету. Cкpипaчпророк(490 знак., 02.08.2013 08:38)
- Сахар лежит в баночке из-под кофе, на которой написано "соль"(С) - Vit(02.08.2013 08:42)
- По ссылке даже слово "одновременно" нету. Cкpипaчпророк(490 знак., 02.08.2013 08:38)
- перечитывая классиков:) забил:) - Vit(02.08.2013 00:16, ссылка)
- И где это я говорю об "одновременности"? Если сами с собой разговариваете, то хотябы на меня не ссылайтесь, бля. - Cкpипaчпророк(01.08.2013 23:02)
- в кононичЬной:) Vit(153 знак., 01.08.2013 21:50)
- Пример события из ОС: поступили данные в сокет (проявляется в WaitForMultipleEvents() или в select()). Но какие данные -- не узнаешь, пока не прочитаешь. Также и здесь. И таки да, у всех всё работает, кроме Скрипача, который несёт какую-то чушь fk0легенда(697 знак., 01.08.2013 22:28, ссылка)
- То, что "вы" называете "event driven" нечто полностью этому противоположное. Цитата: "факт события использовать только для запуска автомата, в котором уже игнорировать событие и проанализировать входы напрямую". Cкpипaчпророк(238 знак., 01.08.2013 18:39)
- У Шалыто оно уже event driven -- автомат получает события как аргумент функции. И менять ничего-то не нужно. Если речь про то, что при вычислении условий перехода вызываются какие-либо функции (`x') и проверяют входы, например, то ничто не мешат fk0легенда(680 знак., 01.08.2013 17:42)
- Не смущает. Cкpипaчпророк(250 знак., 01.08.2013 16:53)
- Методика Шалыто вполне полная. А вот у вас как раз отсутствие методики. Когда не только программы пишутся программистом по наитию, но точно также выдумывается из головы алгоритм управления, зачастую противоречивый и не полный. Автоматы нужны в fk0легенда(273 знак., 01.08.2013 16:14)
- Подразумевалось, что (изменение) входных сигналов вызывают события. - fk0легенда(01.08.2013 16:10)
- "Приказом по предприятию запретить отказы и выход из строя оборудования КИПиА" :))) Это к попыткам принять в размышлениях возможность влиять на поток событий. - Cкpипaчпророк(01.08.2013 15:34)
- Возражение не принимается. Работа жесткой логики и программы чуток отличаются. Расставьте всего-лишь 2 входа на разные порты МК и автомат "сам,, в любой момент времени, полностью определить состояние ВСЕХ своих входных сигналов" тупо НЕ СМОЖЕТ и Vit(74 знак., 01.08.2013 16:55)
- Не так. Модель конечного автомата: Cкpипaчпророк(294 знак., 01.08.2013 14:16 - 14:22)
- fk0 в том, что без событийной системы строить мелкожручее, ИМХО, прав. Запускать же адресно автомат (с неформализованным, например, описанием) по событию, которое он ожидает, т.е. описано явно, у Вас почему-то оказывается сложным. Vit(1490 знак., 01.08.2013 10:06)
- А у вас в программе все ошибки - синтаксические, да? :) Cкpипaчпророк(164 знак., 01.08.2013 00:24)
- я предлагал читать - Vit(01.08.2013 00:10)
- Practical UML? Качаю. У меня сейчас и-нет "походный". Медленно. - Cкpипaчпророк(01.08.2013 00:29)
- там её приаттачил - Vit(01.08.2013 10:10, ссылка)
- Я видел. Начал просматривать, но Cкpипaчпророк(76 знак., 01.08.2013 14:24)
- там её приаттачил - Vit(01.08.2013 10:10, ссылка)
- Practical UML? Качаю. У меня сейчас и-нет "походный". Медленно. - Cкpипaчпророк(01.08.2013 00:29)
- автомат без явного описания состояний это прототридсы. всё Вам опасно и редко возникающе:) - Vit(01.08.2013 00:15)
- ОС для событийного программирования? Проектирование "событийного" автомата радикально менее формализовано, чем проектирование "автомата состояний". И потому более опасно в плане редко возникающих ошибок, примеры которых я привел ранее. - Cкpипaчпророк(31.07.2013 23:14 - 23:31)
- А можно ссылку, чё читать? А то по вашей ссылке яркие краски, бубенчики и крайне мало текста :( - Cкpипaчпророк(31.07.2013 22:26)
- Лучше Miro Samek-а читать - Vit(31.07.2013 22:18, ссылка)
- "Наизнанку - это как?" Гусары молчать! :) Cкpипaчпророк(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)
- Роскошно живете, товарищ! :) - Гyдвинволшебник(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)
- "Далее, полезли глюки неопределенных состояний"... и это главная беда. Cкpипaчпророк(750 знак., 31.07.2013 17:03)
- Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг -- суть есть тонкая диверсия. Невозможно писать программы в императивном стиле. Особенно, управляющие программы. fk0легенда(2184 знак., 31.07.2013 16:47)
- Признаюсь честно, я батареечных приборов не делал. Максимум - с резервированием питания. Но писать "чисто событийно" пробовал. Не понравилось. Cкpипaчпророк(314 знак., 31.07.2013 16:30)
- не нужго ничего выворачивать. В основном цикле ложимся спать. По приходу любого прерывания - просыпание и проворачивание всех задач. - zeleny(31.07.2013 22:14)
- Религиозный фанатик детектед! Ну да, фсе процы фсегда на батарейках, а если нет - сжечь! И про реактивность - тоже лажа: в огромном множестве задач такой подход отлично работает. - SciFi(30.07.2013 22:46)
- Он успешно работает в маленьких проектах и без особых требований к потреблению. - fk0легенда(30.07.2013 22:55)
- Я бы сказал что как раз на БОЛЬШИХ системах такой подход работает лучше, чем событийно-ориентированное программирование. Cкpипaчпророк(125 знак., 30.07.2013 23:15)
- В больших системах множество независимых параллельных процессов. С разными требованиями к времени отклика. И эта тупая проверка условий в каждом цикле сжирает слишком много cpu, чтобы время отклика стало неприемлимо большим, даже если все условия fk0легенда(64 знак., 31.07.2013 00:50)
- есть ресурс. вычислительная мощность. такой цикл автоматически перераспределяет этот ресурс. подразумевается что евентс по прерываниям обрабатываются. больше нагрузка на обработчиках - меньше работает основной цикл. в основной цикл можно заложить Бeлый Жpeц(220 знак., 31.07.2013 16:36)
- Эта "тупая проверка" сжигает так мало, что с экономии на переключении контекстов вытесняющей ОС, инфраструктуры "запуска-остановки задач" и "отправки сообщений" еще и остается :) - Cкpипaчпророк(31.07.2013 00:57)
- В больших системах множество независимых параллельных процессов. С разными требованиями к времени отклика. И эта тупая проверка условий в каждом цикле сжирает слишком много cpu, чтобы время отклика стало неприемлимо большим, даже если все условия fk0легенда(64 знак., 31.07.2013 00:50)
- Ну на БОЛЬШИХ !Ё! БАТАРЕЕЧНЫХ он точно не работает ;о) - Cкpипaчпророк(30.07.2013 23:11)
- Коих (этих проектов) сильно больше половины, я бы сказал. Такшта не надо излишне драматизировать. - SciFi(30.07.2013 23:00)
- Я бы сказал что как раз на БОЛЬШИХ системах такой подход работает лучше, чем событийно-ориентированное программирование. Cкpипaчпророк(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)
- Ткните пальцем на "вложенный автомат у Шатыло", не дайте помереть необразованным. - Cкpипaчпророк(30.07.2013 19:38)
- по первой ссылке - книга, в которой есть разбор по вложенным автоматам. по второй - работа, на которую авторы книги ссылаются, как на первичное определение вложенного автомата. - Д.ARMoeд(31.07.2013 00:17 - 00:52, ссылка, ссылка)
- Отлично! Я, в принципе, ожидал 100% совпадения, но оно таки 100% совпадение :) - Cкpипaчпророк(31.07.2013 00:51)
- На softcraft.ru есть статьи, из наиболее старых, где в целом описывается технология. Там упоминается. - fk0легенда(30.07.2013 22:42)
- по первой ссылке - книга, в которой есть разбор по вложенным автоматам. по второй - работа, на которую авторы книги ссылаются, как на первичное определение вложенного автомата. - Д.ARMoeд(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? Не подскажешь неразумным? - Гyдвинволшебник(30.07.2013 23:08)
- Это когда кто-то говорит планировщику, что он наступил. И планировщик начинает запускать процессы ожидающие оного event. - fk0легенда(31.07.2013 00:48)
- Бу-га-га... Я как раз об этом: этот "кто-то" должен, как минимум, поместить событие в очередь, планировщик должен выполнить извлечь из очереди, провести "тупую проверку" кучи событий, запустить процессы. Накладные расходы на переключение Гyдвинволшебник(119 знак., 31.07.2013 13:58, ссылка)
- Вот эти накладные расходы, они меньше, чем тупая проверка условий в цикле. Потому, что они возникают только при возникновении события, а не существуют постоянно в каждом цикле. - fk0легенда(31.07.2013 14:02)
- Вот я и просил, чтобы ты подробнее разъебеснил, что есть "событие" применительно к железке с малыми ресурсами в твоей интерпретации. - Гyдвинволшебник(31.07.2013 14:22)
- Мы (!под свой круг задач!) реализовали так - в main крутится диспетчер (да, это big loop без всякого вытеснения, ибо не требуется), просматривающий приоритетные очереди. Источники событий - обработчики прерываний, в т.ч. и от таймера(ов). Источник Chum_A(348 знак., 31.07.2013 18:34)
- Цитата: "Теоретически диспетчер мог бы при пустых очередях скомандовать в sleep, но не пробовали за неактуальностью". Спасибо, отличная шутка про батареечные решения :о) - Cкpипaчпророк(31.07.2013 18:38)
- Именно так, похожим образом, и делается... - fk0легенда(31.07.2013 20:00)
- Ни секунды не сомневаюсь :-| Cкpипaчпророк(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)
- Ни секунды не сомневаюсь :-| Cкpипaчпророк(219 знак., 31.07.2013 20:50 - 20:54)
- Именно так, похожим образом, и делается... - fk0легенда(31.07.2013 20:00)
- Цитата: "Теоретически диспетчер мог бы при пустых очередях скомандовать в sleep, но не пробовали за неактуальностью". Спасибо, отличная шутка про батареечные решения :о) - Cкpипaчпророк(31.07.2013 18:38)
- Какая разница, какая железка? - fk0легенда(31.07.2013 14:24)
- Ну-ну... - Гyдвинволшебник(31.07.2013 14:36)
- Нуну. Не надо рассказывать, мол контроллеры программируются вот так-то, а я дурак, пришёл из мира ПК, ассемблера не знаю. Я по крайней мере видел с двух сторон как оно и могу судить. - fk0легенда(31.07.2013 14:46)
- Ну-ну. Разведем пальцы веером, хвост павлином... Нах аргументировать. Если че, я так вообще ни сколько не программист. Хотелось конкретного примера - так сказать, для постижения... - Гyдвинволшебник(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)
- Ну-ну. Разведем пальцы веером, хвост павлином... Нах аргументировать. Если че, я так вообще ни сколько не программист. Хотелось конкретного примера - так сказать, для постижения... - Гyдвинволшебник(31.07.2013 14:54)
- Нуну. Не надо рассказывать, мол контроллеры программируются вот так-то, а я дурак, пришёл из мира ПК, ассемблера не знаю. Я по крайней мере видел с двух сторон как оно и могу судить. - fk0легенда(31.07.2013 14:46)
- Ну-ну... - Гyдвинволшебник(31.07.2013 14:36)
- Мы (!под свой круг задач!) реализовали так - в main крутится диспетчер (да, это big loop без всякого вытеснения, ибо не требуется), просматривающий приоритетные очереди. Источники событий - обработчики прерываний, в т.ч. и от таймера(ов). Источник Chum_A(348 знак., 31.07.2013 18:34)
- Вот я и просил, чтобы ты подробнее разъебеснил, что есть "событие" применительно к железке с малыми ресурсами в твоей интерпретации. - Гyдвинволшебник(31.07.2013 14:22)
- Вот эти накладные расходы, они меньше, чем тупая проверка условий в цикле. Потому, что они возникают только при возникновении события, а не существуют постоянно в каждом цикле. - fk0легенда(31.07.2013 14:02)
- Бу-га-га... Я как раз об этом: этот "кто-то" должен, как минимум, поместить событие в очередь, планировщик должен выполнить извлечь из очереди, провести "тупую проверку" кучи событий, запустить процессы. Накладные расходы на переключение Гyдвинволшебник(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 ;) - Гyдвинволшебник(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 ;) - Гyдвинволшебник(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)
- Нет в прототредах такой проблемы Cкpипaчпророк(101 знак., 30.07.2013 19:35 - 19:43)
- Приемлемый ответ в виде "вложенного автомата" есть у Шалыто. А у прототредов есть проблема -- как ожидать более одного события одновременно. - fk0легенда(30.07.2013 16:08)