:: Home :: Code Snippets :: Drivers :: Projects :: About ::
 Main Menu
  Code Snippets

 Open Drivers
 _build - Embedded build information
 qTask - Queued Task Manager
 PIC32 mcompat - PIC32 mcompat
 EA-DOGM - LCD Display Driver

 Open Projects
 fplCore - Self contained controller
 oLogic 1.4 - NEW Logic Viewer
 oLogic - Oscilloscope Logic Viewer
 SSX32 - Serial Servo Driver
 uProfiler - uController uProfiller



Supply House
  Allied Electronics
  Clearwater Technologies

  N34D Blog

16 thread user programmable controller

System Overview

This system is built upon a micro kernel and features 16 virtual processing units. Each thread execute one token, or part of a sequence in a round robin fashion in the background while the CLI is also operating. Since true multi-tasking (aside from dual core) does not exists, the main cli is broken down into several pieces (states) and the virtual threads run between these states. Each thread is also broken into several states and a single operation on one thread may occurring while other threads are also processing. The layers of the system, from the top down.

  • CLI - Command line interface. The CLI is known as IceCap, it is a CLI that was developed independently from this project, and thus has its own version number.
  • Background Task Manager - Background task processing handles management of any system FIFO buffers, long, or timing critical portions of the user program, such as the statement 'waitHigh'. (see statement waitHigh for more info)
  • Thread Interpreter - This is the virtual cpu/program interpreter that handles the execution of the 16 virtual threads.
  • dmalloc - Memory manager was developed for this project to simplify using external ram in the core system program. To fit the entire system within the limits of the internal flash of the microcontroller, it was beneficial to unify one piece of code (dmalloc) instead of writing several pieces to handle different areas in the system.
  • Kernel - The Kernel handles all i/o to the hardware was also developed independently from this project, and also has its own version number. For the techies, this is a very similar type of kernel to a linux /dev device manager.
  • Drivers - The hardware drivers were written for each type of hardware attached, ex: external RAM, external EEPROM.
  • Hardware, this is the physical hardware in the system.

  • This system will store user programs on an External EEPROM, there is tiny block file system, very similar to FAT. Programs are stored as standard ASCII text. When a program is loaded into RAM, it is at that time semi lexed, parsed and tokenized, to allow faster execution at run time. Note: Stored programs are not tokenized, thus allowing flash upgrades to the microcontroller itself without affecting the stored programs. Thus a new tokenizer, token changes, more optimizations can be implemented and existing programs will continue to run.
     Project Specs
    sw ver: 1.10
    mcu: 18F46K20
    xtal: 16MHz
    clock: 64MHz
    threads: 16

    PIC: 18F46K20
    All Caps: .01uF


    fplCore.zip - All files

    :: Home :: Resources :: PIC Microcontrollers ::
    :: 10F :: 12F :: 16F :: 18F :: 24F :: 24H :: 30F :: 33F ::
    (C) Copyright 2009 mculabs.com - contact: info@mculabs.com