2015-05-16 5 views
2

Я не уверен, как действовать по проекту, когда речь идет о разработке кода.Code Design - конечный автомат или процедурный код

Подумайте о устройстве, которое должно контролировать значение напряжения с помощью аналого-цифрового преобразователя и иногда должно регулировать его выход pwm, если измеренные значения оставляют определенные пределы. Устройство также имеет интерфейс, например. Светодиоды и кнопки и потенциометр.

Если пользователь изменяет значение потенциометра, устройству все равно придется контролировать напряжение, пока устройство ожидает ввода пользователем. И еще одна проблема заключается в том, что устройству придется действовать быстро (отключив драйвер для питания в течение 10 мс). Вы бы порекомендовали конечный автомат или, скорее, процедурное программирование?

Насколько сложно было бы создать государственную машину в C? Было бы достаточно быстро, если контроллер (STM32F0) должен прочитать 4 входа АЦП и сгенерировать 2 PWM?

+1

Если вы рассматриваете дизайн конечного автомата, рассмотрите [QP Active Object Framework] (http://state-machine.com/). Он имеет кривую обучения, но, на мой взгляд, это того стоит. – kkrambo

ответ

2

Государственные машины лучше всего подходят для крошечных приложений, которые не нуждаются в масштабировании. Если это входит в устройство, которое служит одной цели, государственные машины в порядке. Когда дело доходит до ползучести функции, государственные машины быстро станут беспорядком.

Процессор, который вы используете, имеет более чем достаточную мощность для решения этой задачи. Скорее всего, лучше всего будет работать с таймером и прерыванием. Прочитайте АЦП с прерывания таймера. Вы должны быть в состоянии легко прочитать АЦП с частотой 1000 Гц или быстрее.

И использовать неподвижную точку или целые числа вместо плавающей запятой.

+5

Я не согласен с тем, что конечный автомат обязательно трудно масштабировать. Государственные машины - это способ разложить сложность на более модульные куски. При правильной структуре государственного аппарата масштабирование должно стать проще - не сложнее. – kkrambo

Смежные вопросы