Firmware libraries of precoded device drivers facilitate multitasking

All hardware on Mosaic's tiny embedded computers and I/O expansion boards (the Wildcards) is supported by extensive firmware libraries of device drivers.

The onboard software contains pre-coded library functions that manage all of the hardware resources and provide time-sliced multitasking services, allowing design engineers to take full advantage of the hardware capabilities of Mosaic real time embedded controllers. These library functions are callable from C, Forth, or assembly.

User Interface and Device Driver Libraries

The device drivers are provided as modular kernel extensions. The precoded driver software defines a set of functions that initialize, configure and operate the hardware, so you can concentrate on the high level design of your application.

In addition to device drivers, kernel extensions provide more extensive software toolkits including the Graphical User Interface (GUI) toolkit, and the GUI Builder. These software modules make it easy for you to interactively define and run a real-time menu-based user interface.

Designing a Custom User Interface

Built-in functions manage the keypad and display, so your product can keep users completely informed and prompt them to enter inputs via the keypad. For example, to detect a keypad entry, simply execute

key_index = Keypad();

which assigns the index of the selected key to the variable key_index. To display a welcoming message starting at character position 1 on line 1 of the display, execute the function calls

StringToDisplay(1, 1, " Welcome to QED!");
UpdateDisplay();

The routine StringToDisplay places the specified text string into the display buffer, and UpdateDisplay writes the contents of the buffer to the liquid crystal display. The Mosaic controller's pre-defined commands give you complete high level control over the keypad and display so you can easily design a user-friendly interface.

Using the Onboard Analog Converters

Ready-made library routines make it easy to control the A/D and D/A converters. For example, the C function call

AD8Sample(3);

samples analog channel 3 and returns a digital result ranging from 0 to 255. Similar functions control the 12 bit A/D. To create an analog output using the 8 bit D/A converters, simply specify an 8 bit value in the range 0-255 and a channel number, and call the routine SetDAC. For example, to output the full scale voltage on channel 5, execute the function call

SetDAC(255,5);

The Mosaic controller's analog outputs make it easy to control actuators such as audio transducers, X/Y plotters, and servo motors.