Our standard off-the shelf controllers offer a range of features making them an attractive alternative to programmable logic controllers in embedded OEM applications. All current products are expandable, and most can use our unique Touch of SPice boards for added special purpose functionality. SPLat standard controllers are the best way to start developing controls for your product.

One thing our controllers have in common is Real World I/O, with current drive up to several hundred milliamps and protected inputs. The contrasts with most board level products, that leave you to build your own real-world interface circuits. For example, our outputs will drive automation style pneumatic solenoid valves directly, and our inputs connect to industrial NPN type sensors. And with every one of our controllers you get 32 processes for the price of one!

Controller comparison chart

Our off the shelf controllers provide an excellent price/performance ratio for Proof of Concept and low volume production use. Remember though, that we can also make you a custom SPLat with any combination of features you need, including analog resolution to 18 bits and beyond and high current or very high speed special purpose circuits, sensor interfaces etc.

  HD8 CC18 MS121 MMi203A SL100 HMI430
LCD display ######### No No 2x16, blue dimmable backlight Optional 2x16 through 4x20, with or without blue dimmable backlight No 4.3" Colour
Push buttons ######### No No 5 5 No No (Touch screen)
Programmable LEDs ######### 3 7-segment red numeric digits 1 red/green/orange status LED 4 red 7 red No No
Beeper ######### No No No Yes No Yes
Digital inputs ######### See bidirectional I/O below See bidirectional I/O below 4, NPN/PNP selectable 8 NPN 8 NPN See bidirectional I/O below
Digital outputs ######### See bidirectional I/O below See bidirectional I/O below See bidirectional I/O below 8 NPN, 500mA 8 NPN, 500mA See bidirectional I/O below
Bidirectional I/O ######### 4, NPN in or 870mA out 16, NPN in or 500mA out 8, NPN in or 500mA out 0 0 8, NPN in or 500mA out
Analog in ######### 2ch, 10-bits res. 0-5V, 0-10V, 20mA, temperature 2, 0-5V ratiometric (10-bit res) Via optional SPice board (10-bit res) 2ch, 10-bits res. 0-5V, 0-10V, 20mA, temperature 1ch, 10-bits res. 0-5V, 0-10V, 20mA, temperature 2ch, 12-bits res. 0-3.3V, 0-10V, 20mA, temperature
Analog out ######### 2ch, 0-10V, 10-bits res. No Via optional SPice board (10-bit res) 2ch, 0-10V, 10-bits res. 1ch, 0-10V, 10-bits res. 1ch, 0-10V, 10-bits res.
I/O indicator LEDs ######### No No No Yes Yes No
I/O Expanders Yes Yes Yes Yes Yes No
RS232 ######### No No No Yes Yes No
TTL Serial 1 1 1 0 0 2
ModBus ######### Yes, via add-on RS485 or RS232 adaptor Yes, via add-on RS485 or RS232 adaptor Yes, via add-on RS485 or RS232 adaptor Yes, RS232 Yes, RS232 Yes, TTL & RS485
Xwire networking (TTL) ######### Yes Yes Yes Yes Yes (via SPice) Yes
Xwire networking (RS485) ######### No No No Yes No Yes
SPice connectors ######### No No 2 (11 pins + serial comms) 1 (6 pins) 1 (6 pins) No
Program memory (approx) ######### 21K (~12,000 instructions) 21K (~12,000 instructions) 64K (~36,000 instructions) 64K (~36,000 instructions) 21K (~12,000 instructions) 64K (~36,000 instructions)
Data memory (RAM) ######### 250 Bytes 250 Bytes 250 Bytes 250 Bytes 250 Bytes 250 Bytes
Real Time Clock ######### No No No Yes No Yes
High speed counter ######### No 1 @ 100kHz 1 @ 100kHz 1 @ 5kHz-18kHz 1 @ 5kHz-18kHz No
Medium speed counter ######### 4 @ 1.8kHz. 8 @ 1.8kHz. 8 @ 1.8kHz. 8 @ 1.8kHz. 8 @ 1.8kHz. No
Quadrature counter ######### Yes Yes Yes Yes Yes No
MultiTrack™ multitasking #########
See 32 processes for the price of one!
Yes Yes Yes Yes Yes Yes
Floating point arithmetic ######### Yes Yes Yes Yes Yes Yes
Faceplate & membrane overlay ######### No Not applicable Optional accessory Included in Developer's Kit, buy separately with OEM version Not applicable Not applicable
1-off price (Aussie dollars) $89 $59 $99 $149 $139 $329
  HD8 CC18 MS121 MMi203A SL100 HMI430

The MS121 comes with a 2 line by 16 character LCD. The MMi202 board is capable of supporting display sizes from 2x16 up to 4x20. We supply Developer's Kit versions of the MMi202 with a 2x16 display. You can also supply your own display in other sizes.

The detailed documentation contains information on selecting and wiring compatible displays. In any event, the SPLat boards provide advanced programming support for the LCD, and our programming software simulates the LCD, so displaying text messages or formatting numbers is a breeze. That means the LCD on a SPLat controller can provide rich interactions with your users, up to and including next menus.

Push Buttons The push buttons on the MS121 and MMi202 are miniature switches known as 'TACT' (for tactile) switches. The switches (S) are designed to be placed behind a plastic membrane overlay (G), giving an effect similar to the membrane switches on a microwave oven. The board (B) is mounted off a metal faceplate (P) which the membrane is glued to. The fasteners are not shown.

From a programming point of view the push buttons appear as inputs. They do not use up any other inputs, so you can consider them as bonus inputs.

Programming is simple. You can test the buttons just like any other inputs. We also have a special latched input feature, which means that if a button is pressed, the event is remembered and can be tested for some time later. This conveniently saves a lot of programming to test if the button has been released again. On the MMi202 reading out a latched button press can automatically generate a brief beep, giving user feedback without any additional programming.

LEDs The programmable LEDs on the MS121 and the MMi202 are located so they can shine though a membrane overlay (G). The board (B) is mounted off a metal faceplate (P) which the membrane is glued to. The fasteners are not shown. The programmable LEDs are programmed as outputs, but do no use up any of the regular outputs, so they really are a bonus.

In your program it is very simple to turn the LEDs on and off. There is also a facility to set them to blinking automatically. You can even control the blink pattern!

The Beeper on the MMi202 appears as a simple output, but does not consume any of the regular outputs.

It is very simple to program, and can be set to automatically produce a short confirming beep each time a latched push button press is read out.

The 4 digital inputs on the MS121 share a single onboard jumper that sets them as NPN or PNP inputs.

An NPN input is 'ON' when the input pin is connected to circuit common either by a switch (or piece of wire) or by an industrial NPN sensor. A PNP input is 'ON' when the input pin is pulled up above some positive threshold voltage. In practice this usually means connecting it to the positive supply voltage via a switch or with an industrial PNP style sensor.

The digital outputs on MMi202 and SL100, and the MS121 and CC18 bidirectional pins used as outputs, all have similar characteristics. The outputs are Darlington transistor switches that switch the output pin to circuit common, i.e. "ground". This completes a circuit so that a load device, say a relay coil, connected between the output pin and the positive DC supply voltage will be activated. The outputs have inbuilt diodes to protect against damage from reverse voltage spikes from inductive loads (relays and solenoids),

Each output is rated at up to 500mA.

Outputs can be programmatically turned ON or OFF. You can also set them to Blink (i.e. automatically flash on and off). You can update any 8 contiguous outputs at once, and you can also read back the last state set in every output.

The MS121, HD8 and CC18 feature bidirectional I/O ("BIO"), a SPLat innovation first introduced with our OEM36 many years ago. A BIO pin can be used as an input or as an output, giving you the maximum flexibility in applying the resources of the controller. Which mode it operates in is down to the programming, which is very simple. There are no direction registers or configuration procedures, simply use it as one or the other and it just happens.

As an input the BIO pin is a standard NPN input with all the programming flexibility of any other input. As an output is is just like any other 500mA output.

The analog inputs on the MMi202, SL100 and HD8 are extremely versatile, and reflect SPLat's innovative approach to design. One simple jumper allows the analog inputs to be set for 0-10V mode, 20mA mode or temperature measurement mode.

The temperature measurement mode lets you use a low cost thermistor to achieve temperature measurements of modest accuracy (typically 2°C) and resolution (typically 0.1°C) for no more than the cost of a thermistor (as little as $0.50 or less). The SPLat Knowledge Base contains a detailed tutorial on thermistor temperature measurement.

The standard analog inputs have 10-bit (0.1%) resolution.

The MS121 does not have any analog on the base board, but can have it added via an add-on SPice board.

The analog outputs on the MMi202, SL100 and HD8 provide a 0-10V DC "ground referred" output. The outputs are capable of driving a 2K load. Resolution is 10 bits (0.1%). The MS121 does not have any analog on the base board, but can have it added via an add-on SPice board.

The MMi202 and the SL100 feature indicator LEDs on all digital inputs and outputs. These provide a visual indication of the state of the pin, and are very useful for diagostic purposes.

Program Memory is the memory where your application program is stored. In the current generation of SPLat controllers this is an area of Flash memory located inside the main processor chip. This memory is non-volatile, meaning it retains its information when the power goes off. Your program is transferred into the program memory from your PC via a programming cable. There is no complicated EPROM programming to worry about.

The SPLat programming paradigm is extremely efficient in its use of program memory. Before being sent to the board your program is translated into a very compact form called p-code or byte code which occupies about one 9th the space of the equivalent code compiled from C. The very first SPLat had 2K of program memory, and no application was ever written for it that wouldn't fit. With the MMi99 (ancestor of the MMi202), we went to about 9K. That larger memory was mostly used for all the text messages and menus that became possible with the LCD display. The memory size of the MMi202 is therefore massive in terms of the uses you would put a SPLat to. For the CC18, which does not have an LCD, you would have to work very hard indeed to run out of program memory.

RAM is the memory where your program stores its variable data. Compared to a modern PC with maybe 1GB of RAM, 250 bytes doesn't sound very much. In actual fact, with the kinds of things you use a SPLat for, and with SPLat's efficient usage, it is quite adequate. Also, this is net useable RAM available to your program, with all the "under the hood" stuff already taken care of.

The main data types stored in RAM are floating point (4 bytes), simple integer counters etc (1 byte) and semaphores. Semaphores are 1-bit variables ("internal relays", "switches"), and get packed 8 per byte.

The RTC contains a 7-day time of day clock, a calendar and 8 programmable events. Each event can be set to go off at certain time of the day, and on any combination of days of the week. This makes it very easy to for example program a schedule that differs at weekends.

The RTC has inbuilt SuperCap backup power that will keep the time for over 2 days. Unlike batteries a SuperCap has no wear-out (lifetime) limits. You can also add your own external battery for even longer retention.

The high speed counter counts pulses on one of the regular digital inputs. The maximum count frequency depends on the product and may vary with supply voltage. There are two counting modes: accumulated count mode (24-bit) and frequency mode (16-bit).

The medium speed counter counts pulses on several of the regular digital inputs. The maximum count frequency depends on the product, but is typically 1.8kHz. There are two counting modes: accumulated count mode and frequency mode.

A quadrature counter tracks the output of a quadrature (two-channel incremental) encoder and maintains a up/down counter indicating position. In SPLat the regular quadrature counter function counts up to 2.5kHz (input changes per second) and maintains a 24-bit counter. Programming is as easy as resetting the counter and reading it out when required.

Multitasking is the ability of a processor or controller to do many things seemingly at once. MultiTrack programming simplifies the programming of multitasking to the learning just of 2 instructions, and makes SPLat beyond dispute the easiest controller in the world to program for the majority of control applications.

MultiTrack is an inbuilt "non-premptive" multitasking operating system which is rich in useful features yet extremely easy to use. It allows you to write your program as a number of autonomous tasks. Just one extra line of code per task is all that is required to tie them together. Thereafter each task runs as if it were a complete program with its own processor. There are simple mechanisms to let tasks communicate with each other so they can synchronize their activities. There is also a timing mechanism that lets you program time intervals from 10mS to 46 hours with one simple set of instructions.

MultiTrack is not the first multitasking system in the world. It is however the first multitasking system in the world designed specifically to simplify the programming of controller applications. as distinct from general purpose computing. If you are a novice you will find it very easy to learn. If you are an expert you will wonder why nobody ever did it this way before.

One of the features that makes SPLat so attractive to advanced users is its floating point processor. With floating point you can program numerical calculations on positive and negative numbers, very large and very small numbers with little or no worry about overflows or underflows. The accuracy is approximately 6 decimal digits. Programming is easy, about as difficult as writing down the keystrokes you'd perform on a calculator.

As an added bonus, SPLat's floating point processor performs non-stop computing. That means if you should get unlucky, and attempt an operation like divide by zero, the processor won't crash. At the same time, every operation that can lead to an error returns a result indicator that your program can test. This can save huge of amount of time in programming, because you can eliminate a lot of bounds testing on raw data.

Xwire lets you connect together several SPLat controllers and dedicated peripheral boards into a small network. It is extremely easy to set up and program. Wiring is a simple twisted pair. To program it you simply create a table that links memory locations in a slave to corresponding locations in the master. Xwire automatically keeps the two tracking each other, with a small transmission delay.

The SPice connector(s) on a SPLat board provide a connection point for a small add-on board that sits piggy-back on the main board and provides some special-purpose functionality. This idea is the key to inexpensively configuring standard product for varying needs, and also to allowing us to offer semi-custom solutions even in small quantities.

The SPice connector on the MMi202 and the SL100 makes a total of 6 pins available for SPice boards. These pins are configurable, so a number of mixes of analog and digital, input and output are possible.

The MS121 has a second SPice connector bringing, its total number of SPice pins to 11.

The RS232 port on MMi202 and SL100 controllers is primarily for programming, but can also be used by your application. The SPLat RS232 port uses a modified RS232 hardware design which allows up to 5 co-located controllers to be connected in parallel to form a short range network.

Controllers without true RS232 have a TTL Serial Interface. For programming they use a special adaptor cable. This low cost cable is included in the Developer's Kits.

ModBus is a widely used communications protocol for control systems. The ModBus implementation in SPLat supports Master and Slave RTU operation, and is designed for versatility and ease of use. We also supply you with a fully worked example of a VB6 program that interacts with an MMi202 controller.

The SPLat proprietary language is extremely easy to learn, very powerful, and supported with a large amount of tutorial materials. It is heavily oriented towards embedded control systems, and makes light work of time delays, reacting to inputs, generating operational sequences etc. However, if you are already an experienced C programmer, you may prefer a language and environment that is familiar to you. For C programmers we provide a free multitasking C operating system, SPLatOS, and a library that will simplify accessing the controller's hardware resources from C. SPLatOS is predicated on using a 3rd party C compiler (CodeWarrior for HC08).

The MMi202DK and MMi202cDK216 Developer's Kits include a pre-drilled metal faceplate and a universal membrane overlay.