This device is controlled by an ATmega328P programmed on an Arduino Uno for prototyping. It will be detached from the board on later stages of development.
User input comes from a 16 buttons membrane keypad. Software currently only supports a single button pressed at a time, it will be improved as new functionalities are added.
The output is a simple 16 character × 2 lines LCD display.
Peripherals and pins
The buttons and the display are connected directly to the Arduino board for now. I will later use chips like serial registers to free some I/O pins.
Data and file storage is kept in MCU's EEPROM. The first prototype is still under development so a simple 1024 kB memory storage is enough but data will ultimately be stored in an external EEPROM or SD card.
Software : Operating System and Code Execution
The Operating System programmed on the controller implements a fully custom file system, a file browser, a code editor and a code executor. The whole Arduino project is available freely on my github, I'm always working on it.
The microcontroller's dynamic memory can store 2048 bytes of data. Let's say half of that is used by the operating system itself, then 1024 bytes can be used as user memory for programs. I want programs to be able to call other programs, to use them as functions for example. Programs will be able to allocate chunks of memory within these 1024 available bytes.
Programs can use the kernel for certain operations using system calls :
- Input using buttons
- Output using the screen display
- Input/Output using on-board pins (or maybe serial registers)
- File access
- Execution of other programs
Emulated Programming Language
Programming language is based on Instruction List (IL). General instructions are written in uppercase whereas system calls are written in lowercase.
I programmed most of the instructions and I've been able to execute simple programs with arithmetics and logic, and interracting with the screen display and the buttons.
I often change my mind about how the device is supposed to work. Latest details about the operating system are available on the project's Github, in the docs folder on the dev branch.Read more »
it would be good if you gave a wiring diagram