??? 01/28/11 00:15 Read: times |
#180870 - Well, I have to admit ... Responding to: ???'s previous message |
I don't find myself writing software state machines that are independent of the associated inputs and outputs. Maybe this is because, when dealing with microcontrollers, I don't pretend I'm using a large computer. Consequently, the state machines I do write generally have state bits that are also outputs and their transitions are governed by the current state and the inputs. This makes them easily testable.
My position, generally speaking, aside from timing loops, mostly for delay, I don't use software "state machines". If the state bits aren't involved in outputs, I find them irrelvant. Maybe you find my approach simplistic, but, after all, I want my app's to be simple, small, and quick. When I'm encoding (modulating) a data stream, or decoding it, I use hardware external to the MCU. If it's so slow a process that it would be realistic to do it in firmware, I might consider it, but, then, there's often a very simple way to do it that does, in fact, involve the outputs' use of state bits easily observable from the outside. Now, I don't know what you mean by "software test harness" if it's not hardware. Further, I don't know what an 805x or other 8-bitter would do with machines whose "state length of the state machines may take the pattern generator a billion years to try to swing through 2^128 alternatives." but a half-decent pattern generator can update its outputs at a 100 MHz, and if the inputs and outputs change more slowly, they don't have to be all-inclusive. After all, state machines are static unless there's a transition, so just the transition states need be exercised in order to verify proper function. If it's noise sensitivity, looking for spurious noise-induced upsets, that you want, you have to have something different anyway. From what I gather, your notion of a "software test harness" is an imaginary thing rather than a piece of hardware. Perhaps you need to elucidate. Most of the time I use the MCU for VERY simple processes and the MCU is simply a way of reducing hardware component count. My code body seldom exceeds 2kB, though, when accompanied by a number of tables, which I don't include in that 2kB the program store content may approach the code space limit of the MCU in question. RE |