-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Welcome to the SIMPL wiki!
SIMPL - A TINY UNIVERSAL MICROCONTROLLER LANGUAGE
SIMPL stands for Serial Interpreted Microcontroller Programming Language - though sometimes the M could be thought of as "Minimalist".
SIMPL consists of a kernel of about 2Kbytes of code, written in C, which is loaded into the microcontroller in the form of a smart bootloader. Once loaded, the microcontroller may be accessed using a simple serial terminal and interactive programs may be written using it's onchip interpreter to access and exercise the hardware peripheral functions of the microcontroller.
SIMPL is designed to be portable between microcontrollers. It is a kind of "lingua franca" which allows you, as the human user, to interact with the hardware peripherals of microcontroller, without the needs for anything much more than a serial terminal.
Some basic uses of SIMPL
Testing GPIO - flashing LEDs and exercising port lines Generating sequences of signals - for exercising peripheral chips - eg SPI or I2C Communicating sensor data to PC Generating high speed clock signals Reading push switches Reading ADC channels Timing the speed of code routines Synthesising waveforms and analogue or pwm signals Musical tone synthesis Interfacing to LCDs to provide graphical or text output
Plus test applications including
Datalogging of signals to RAM Simple 10 bit resolution Oscilloscope FFT Analyser Low cost logic analyser Frequency counter
SIMPL provides a common framework onto which you develop your own applications. If you need to use a different microcontroller, with more speed or additional peripherals, you just simply take your SIMPL framework and application code with you. It provides the ultimate in portability between microcontroller families.
SIMPL uses few of the existing microcontroller memory resources, the basic SIMPL Kernel just requiring 2kbytes of Flash and 512bytes of RAM to run complete with GPIO, communications, ADC timers etc. Often the SIMPL kernel may be packaged in with the bootloader, making its presence transparent to the operation of the users code.
SIMPL programs are by their very nature quite short, and lend themselves to be sent as wireless packets or as GSM SMS messages. SIMPL can be used to allow one microcontroller eg. a Raspberry Pi, to communicate with another - say a high resolution sensor board.
Implementation
It started in Spring 2013 with Ward Cunningham's excellent and original Txtzyme Nano Interpreter - about 100 lines of C code written for Arduino and it has grown from there. SIMPL is now approximately 1000 lines of C code occupying between 2K and 4 k bytes on the target microcontroller.
SIMPL started on an ATmega328 and was written as an Arduino sketch, and relied heavily on the inbuilt Arduino functions - such as Serial,print, digitalWrite etc. Whilst this was convenient at first, the Arduino built in functions are a little verbose and inefficient - so much of the hardware code was re-written, for simplicity and speed of execution.
It has been implemented on the following microcontroller families
AVR ATmega328 ATmega1284P STM32F ARM Cortex M0 M3 M4 M7 103, 373, 407, 746 MSP430 'G2533 FR4133 MK20DX PIC 16Fxxx 18Fxxx
SIMPL generally provides support for UART, TIMERS, GPIO and ADC - peripherals which are found on all but the smallest of microcontrollers.