Цитата(Dog Pawlowa @ Nov 25 2006, 17:25)

Широко использую автоматы, при наличии проблем c ESD особенно - очень просто организовать продолжение работы устройства при сбросе от помех. Думаю, что Прохожий это и имел ввиду. Циклы тем не менее есть, но это те циклы, которыми можно пожертвовать- задержки, чистка массивов и т.д. Организовывать и задержки как состояние автомата не выглядит красиво.
Да, я имел в виду автоматный метод программирования.
Циклов надо избегать при любых обстоятельствах. Лучше перейти на более скоростной вычислитель, незначительно удешевив конструкцию, чем допустить присутствие циклов. Правило есть правило. Я даже при программировании на PC в BC++B стараюсь поступать так же.
Цитата(Dog Pawlowa @ Nov 25 2006, 17:25)

Становится ли этот подход тяжеловесным при усложнении задачи? Я бы сказал - "неоптимальным". При наличии похожих состояний вижу, как расходуется программная память на повторение похожей логики в каждом состоянии, а сделать ничего не могу.
Почему не можете? Наверняка похожии ситуации можно оформить в виде отдельных функций и в качестве параметров передавать только изменяемую часть. Можно использовать вложенные автоматы и так далее. Проблема, на мой взгляд, здесь не в подходе, а в языке.
На С по-любому все это будет выглядеть достаточно громоздко. И этот язык начинает терять преимущества перед Ассемблером. Это, кстати, одна из причин, по которой в пром. автоматике до сих пор используются примитивные релейно-лестничные схемы (LD) или функциональные диаграммы (FBD), однозначно переводимые в псевдоассемблер (IL) и друг в друга.
Цитата(Dog Pawlowa @ Nov 25 2006, 17:25)

Для лучшего понимания помогает правильная организация массивов - каждое состояние имеет не только номер, но и имя (его всегда в моих приборах можно прочитать по интерфейсу, не заглядывая в исходники) ну и система названий.
Абсолютно верно. Полностью поддерживаю. А иначе кирдык. Но опять же, заметьте, это проблема средств реализации автоматного подхода, а не его самого.
Цитата(Dog Pawlowa @ Nov 25 2006, 17:25)

Про заслонку. Любой прибор можно представить, как "набор заслонок". Во всяком случае я к этому стремлюсь :-)
Я бы назвал кусок кода, обсуживающий элементарную заслонку "процессом". При этом процесс может обслуживать не только заслонку, но и внутренний АЦП МК, к примеру, или USART. Процесс строится как автомат. При отсутствии прерываний процессы просто располагаются в памяти один за другим, последовательно.
А вот когда в это дело вносится событийность, реализованная через прерывания, то все резко меняется, поскольку состояния в процессах могут изменяться в обработчиках прерываний. И тогда может получиться так, что состояние процессов АЦП и USART могут изменяться в обработчике прерываний от таймера, к примеру. Получается "рваный" код.
Цитата(Dog Pawlowa @ Nov 25 2006, 17:25)

Ну и ЯВУ. Скорее это оффтопик, но ни в одном из последних моих проектов за пять лет нет ни строчки ассемблера. Меня на нем клинит :-)
Это просто аллергия на кропотливую и нудную работу. Сам болею. В данном случае лечится алкоголем в умеренных дозах в приятном обществе

.
Цитата(Dog Pawlowa @ Nov 25 2006, 17:25)

А компилятор IAR С, например, и есть такой "специализированный ЯВУ", являсь при этом универсальным.
Опять же позволю себе несколько не согласиться. Любой компилятор, так же как и всякие симуляторы с эмуляторами - это всего лишь инструменты, точно такие же как и отвертки, паяльники и осциллографы. Я не хочу никого обижать, это только мое мнение, но из набора инструментов необходимо извлекать всякий раз тот, который наиболее оптимально применим к конкретной задаче. Просто так замыкать все на какой либо инструментарий, на мой взгляд, просто ошибка. Нельзя применять крестовую отвертку к винтам с прямыми шлицами. В конце концов, все дело не в том
на чем мы делаем, а в том
что мы делаем.
Цитата(Dog Pawlowa @ Nov 25 2006, 17:25)

Кстати, сейчас один из проектов эмулируется на PC под Visual C - экран, кнопки, последовательные интерфейсы, работая по тем же исходникам с использованием условной компиляции при необходимости.
И, попутно, вопрос. А с чем связана потребность в такой эмуляции?
Цитата(proba @ Nov 25 2006, 19:29)

про Renesas.
чипы M16C и R8C деисвительно довольно устоичивые, кому интересно, можeт смотрет с renesasinteractive.com . кроме помехоустоичивости стоит смотреть на такие своиства ( которых в ряде других дешевых mk не наидете ) :
-автоматическая переключение на внутренныи rc генератор при остановке основного кварцевого,
-8 уровневая система прерывании,
-до 64 софт прерывания,
-прерывания на undefined instruction, address match, overflow
- запись и стирание flash memory возможно только после ввода password'a. т.e исключено случаиное или преднамеренное стирание чипа посторонними лицами.
Не хочу в теме про AVR говорить о PIC-ах, но не могу удержаться. Все это добро присутствует как в dsPIC30/33, так и в PIC24.
Цитата(proba @ Nov 25 2006, 19:29)

про Renesas.
чипы M16C и R8C деисвительно довольно устоичивые, кому интересно, можeт смотрет с renesasinteractive.com . кроме помехоустоичивости стоит смотреть на такие своиства ( которых в ряде других дешевых mk не наидете ) :
-автоматическая переключение на внутренныи rc генератор при остановке основного кварцевого,
-8 уровневая система прерывании,
-до 64 софт прерывания,
-прерывания на undefined instruction, address match, overflow
- запись и стирание flash memory возможно только после ввода password'a. т.e исключено случаиное или преднамеренное стирание чипа посторонними лицами.
Не хочу в теме про AVR говорить о PIC-ах, но не могу удержаться. Все это добро присутствует как в dsPIC30/33, так и в PIC24.