A C-language computer program implemented as firmware controls the operations of a microprocessor on a 3-by- 1-inch (approximately 76-by-25-mm) motion-control circuit board denoted a widget board. The firmware implements a serial communication interface according to the inter integrated circuit bus (I2C) standard by use of an interrupt-driven state machine to enable communication to occur during execution of commands. The firmware also controls the operation of a motion- control integrated-circuit chip, a serial analog-to-digital converter, a serial digital-to-analog converter, and the digital input/output lines of the microprocessor. The digital input/output control portion of the firmware offers a masking capability. The firmware includes a provision for dynamically downloading, to the widget board, of a small program (limited to 12 lines and to 256 bytes). A microexecutive program executes the downloaded program in a loop, with the option of continuous looping. The execution of the downloaded subprogram can be interrupted at the user’s request. The widget firmware includes a set of more than 48 commands, 24 control operations, and 24 query operations.

This program was written by Issa Nesnas of Caltech for NASA’s Jet Propulsion Laboratory. NPO-30243