Path: csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Les Cargill Newsgroups: comp.arch.embedded Subject: Re: Do you use FSMs or HSMs? Date: Mon, 6 Feb 2017 23:24:14 -0600 Organization: A noiseless patient Spider Lines: 34 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Tue, 7 Feb 2017 05:19:53 -0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="0c3f843cc7080b873602f174ef60d8b0"; logging-data="32448"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18gzp25Wi/y/KkWrPxx7QUV7F3UwOwK91I=" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 SeaMonkey/2.46 In-Reply-To: Cancel-Lock: sha1:D2ZqERZiEUEEhEK/qhx8nLG9K8Y= Xref: csiph.com comp.arch.embedded:25792 pozz wrote: > I often encounter many problems when I have to implement a "behaviour" > in a microcontrollor. For example, I have some analog/digital inputs and > some user commands. Based on that, the logic should set some outputs > (digital or analog). > > Most of the time you (the developer) must understand what is the good > behaviour of the machine, because noone is able to describe it in a good > way. I usually heard the sentence: when the user presses the ON button, > you switch on the engine. > After some short implementation, you understand that the engine should > be on only if the interlock input is closed. > And so on... > > I think the best method to describe a machine behaviour is a > state-machine, mainly a hierarchically state-machine (HSM). Do you agree? > It all depends. This being said, I do like state machines, mainly because they lend well to comprehensive unit/regression test suites and have some advantage in coverage measurement. Hierarchical may or may not help that much. > My post here is to understand if you really use HSMs to describe the > beahviour of the system you are coding and how do you implement them in > C or C++ (or whatever). > I have implemented them in multiple languages and programing paradigms. -- Les Cargill