The C Programmer's Guide to the Mosaic Handheld

Table of Contents


Introduction. How to Use This Manual

Chapter 1: Getting to Know Your Handheld Instrument

Chapter 2: Powering Your Handheld


Chapter 3: Your First Program

Chapter 4: The IDE: Writing, Compiling, Downloading and Debugging Programs

Chapter 5: Making Effective Use of Memory

Chapter 6: Real Time Programming

Chapter 7: Failure and Run-Time Error Recovery

Chapter 8: Programming the Graphical User Interface


Chapter 9: Digital and Timer-Controlled I/O

Chapter 10: Data Acquisition

Chapter 11: Serial Communications

Chapter 12: The Battery-Backed Real Time Clock

Chapter 13: Customizing the Handheld's I/O


Appendix A: GUI Function Reference

Appendix B: Handheld Schematics

How to Use This Manual

Not Approved for Life-Support Use

Mosaic's embedded computers, software, and peripherals are intended for use in a wide range of OEM products, but they are not designed, intended or authorized for use as components in life support or medical devices. They are not designed for any application in which the failure of the product could result in personal injury, death or property damage.

Complex software often contains bugs, and electronic components fail.  Where a failure may cause serious consequences, it is essential that the product designer protect life and property against such consequences by incorporating redundant backup systems or safety devices appropriate to the level of risk.  The buyer agrees that protection against consequences resulting from system failure, of either hardware or software origin, is solely the buyer's responsibility.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and Mosaic Industries, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps.  For example, Microsoft, Microsoft Windows, and Visual Basic are registered trademarks of Microsoft Corporation.

While every precaution has been taken in the preparation of this manual, Mosaic assumes no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein.

Welcome, and thanks for purchasing the Mosaic Handheld™. This manual provides instructions for using your new handheld embedded computer platform.  The Handheld packs a keypad and graphics/character display, programmable computer, up to 1 megabyte of memory, communications, analog and digital I/O, battery pack, and an expansion I/O bus into a rugged handheld enclosure.  This platform is perfect for prototyping and manufacturing handheld instruments and dramatically cuts the cost of data acquisition and control from a handheld user interface. It is ideal for machine automation, industrial control, robotics, handheld data acquisition, and scientific instrumentation.

The I/O-rich Handheld hosts a 16 MHz Motorola 68HC11F1 microprocessor, 512K Flash (expandable to 1 MB) and 128K Battery Backed RAM (expandable to 512K), and 320 bytes of EEPROM.   On-board I/O includes 8 digital I/O lines with counter/timer capabilities, 8 analog inputs, a fast synchronous SPI serial interface, and dual RS232/485 ports.  A real-time clock tracks the calendar and time of day and battery-backs the 128K RAM. 

A convenient prototyping board allows you to integrate application-specific circuitry including sensors and actuators. The Handheld has plenty of room for your own circuitry and up to 4 I/O expansion modules called WildCards™ that you can mix and match depending on your application, allowing you to have virtually any kind of I/O in a convenient handheld form factor.

WildCards implement a wide variety of communications, data acquisition and control capabilities.  Available WildCards include 10/100Mbit Ethernet, octal 12-bit D/A and 16-bit A/D converters, a 24-bit resolution analog data acquisition subsystem, a Compact Flash card mass memory interface, fast buffered RS232/485 dual UARTs, high voltage/high current isolated I/O, and AC or DC solid state relays.  You can select the WildCards that meet your needs to configure a cost-effective customized controller for your application.

The Handheld also includes a nickel-metal-hydride battery pack and self-contained charger, with plenty of power for several days of intermittent use.  The battery pack may be charged overnight or while the instrument is in use.

The Handheld is easily programmable in C, Forth or Assembly using any PC. Built-in programming tools include an interactive debugger, a multitasking executive, and comprehensive device-driver libraries.

Prerequisite Knowledge

The Mosaic Handheld is intended for use by experienced programmers or any technically minded person up to the challenge of real-time programming.  We assume that if you're designing a product requiring an embedded computer, you have experience in the design of the hardware and software needed to customize the Mosaic Handheld to your product, and an understanding of the basics of writing, compiling and debugging software programs.  You should be comfortable programming in either the C or Forth programming languages; you can program the Mosaic Handheld in either.  This manual is geared to the CForth programmer.  If your would rather program in ForthC, give us a call and we'll send you the ForthC programmers manual.  We recommend the following references for novice programmers:

          The C Programming Language, by Kernighan and Ritchie

          C: A Reference Manual, by Harbison and Steel

      Starting Forth, by Leo Brodie

Motorola's M68HC11 Reference Manual and MC68HC11F1 Technical Data Manual are included with this documentation package as Adobe Acrobat Portable Document Format (*.pdf) files.

How to Use this Documentation

This manual is laid out in several parts, in an order we hope you find most useful.  We have invested a lot of effort to make this documentation instructive and helpful.  The available software and hardware functions are all described in detail, and many coded examples are presented. For those who are designing "turnkeyed" instruments, we have included a complete turnkeyed application program.  This well documented program illustrates how to use dozens of features, including the graphical user interface, interrupts, floating point math, formatted display of calculated results, multitasking, and automatic program startup.  The source code is included on your CD-ROM.  This sample program can serve as a useful template for a wide variety of applications.  This manual contains the following parts:

Part 1,Getting Started: A Quick Tour of the Mosaic Handheld, will familiarize you with the Mosaic Handheld (Chapters 1 and 2) and its programming environment, and get you writing your first program (Chapter 3).  These first two chapters guide you through the Mosaic Handheld's hardware, explain how to establish communications with it, tell you how to install your compiler, and show you how to compile and run your first program.

After working through the examples of Chapter 3 you will have exercised some of the key hardware and software features of your instrument.  You might then leaf through the categorized list at the beginning of the C Forth Function Glossary to get a feel for the wealth of precoded library functions available for you to use.

Part 2, Programming the Mosaic Handheld, provides everything you need to know to master real-time programming on the Mosaic Handheld.

Part 3, Communications, Measurement and Control, focuses on the Handheld's hardware resources — A/D, serial communications, timer-controlled I/O, real-time clock and others — and provides examples for using each. 

Part 4, Putting It All Together, introduces a real-time interactive application, and provides code you can use as a template for your application.  It also discusses the nuts and bolts of product integration, mounting, noise considerations and power requirements.

Part 5, Reference Data, contains detailed specifications, pin-outs, and schematics.

Conventions Used in This Book

The following conventions are use throughout this manual:





Analog to Digital Converter



Cold Cathode Fluorescent, a display backlight that uses a small fluorescent light bulb



Compact Flash, a nonvolatile memory with fast random access for reading and slower block writing.



Computer Operating Properly timer


D/A or DAC

Digital to Analog Converter



Electronically Erasable Programmable Read-Only Memory, nonvolatile



Electroluminescent Display



Flash Programmable Read-Only Memory, nonvolatile and on-the-fly reprogrammable



Graphical User Interface, also called an MMI (Man Machine Interface)
or OI (Operator Interface)



Inputs and Outputs



Liquid Crystal Display



Light-Emitting Diode



Peripheral Interface Adapter (a chip that provides 24 digital I/O signals)



Programmable Read-Only Memory, nonvolatile one-time programmable



Quod Erat Demonstrandum, or Quick Easy Design, whichever you prefer



The name of the Mosaic Handheld's onboard operating system and interactive resident language.



Random Access Memory, volatile



Real-Time Clock



Real Time Operating System



Serial Peripheral Interface, a fast bidirectional synchronous serial interface



Static Random Access Memory, volatile



Universal Asynchronous Receiver Transmitter

Throughout this manual the names of code functions and extended code segments are distinguished by their typeface.  The following font styles are used:




English Text

Plain text uses a Times New Roman Font


C function names appearing within text

void InstallMultitasker(void)


Forth function names appearing within text



C code in listings



Forth code in listings



Commands typed to the Mosaic Handheld through a terminal



Mosaic Handheld responses to a terminal program


Code function names and listings use a fixed space font. C code uses a font with serifs, QED-Forth code is sans serif.  Terminal commands are indented and followed by a back-arrow symbol representing the enter key on the keyboard, and the Mosaic Handheld's responses are underlined with a dotted line.  Both are indented in the text.  Listings of more extensive code examples are set off by indenting and captioning.

Integer numbers are not accompanied by a decimal point; the presence of a decimal point indicates that the number is a floating-point format number.  Decimal base numbers are written in standard form while binary numbers are written in hexadecimal (base sixteen, using 0-9 and A-F) and preceded with "0x", for example, the 16-bit integer equivalents of decimal 0, 65,535 and 15,604 are represented as 0x0000, 0xFFFF, and 0x3CF4 respectively.

Obtaining Code Examples and Example Applications

Please check our website periodically at, where we'll be posting code examples and example applications, and providing software updates and enhancements.

For Technical Help (or just to chat) Contact Us

We have tested and verified the sample code in this user's guide to the best of our ability, but you may find that some features have changed, or even that we have made a mistake or two.  If you find an error, please call us and we'll fix it pronto.

If you are facing a challenging software hurdle, or a hardware problem in interfacing to our products, please don't hesitate to contact us.  We provide free technical help to all registered, licensed users, and can often help you over the hurdle and save you a lot of time.

| Next »

Home|Site Map|Products|Manuals|Resources|Order|About Us
Copyright (c) 2012 Mosaic Industries, Inc.
Your source for single board computers, embedded controllers, and operator interfaces for instruments and automation