Software

Philips PCD8544 driver v0.2 (beta, first release) and MapOS server

C++ driver for the Philips PCD8544 LCD controller, based on Fandi Gunawan's C driver.  Ported to C++ for object-orientation and template support.  Supports multiple LCD controllers with separate DC/CE/RST pins, screen caches, etc.  Other enhancements include support for any resolution (not just 84 x 48) and templated pin and SPI bus access for easy porting to new architectures.  Code is GPL'd in the GitHub repository Philips_PCD8544_driver. The MDFly model MD8448B boards pictured here pro...

Motor Controller Server v0.4 (alpha, first release)

An integrated Motor Controller Server (MCS), running under MapOS.  In addition to the standard MapOS dynamic routing capabilities, the AVR version of the MCS sports a continuous oscilloscope output [ADCServer from the ATcommon library], analog encoder sensor monitoring [with fixed-point position output], a PID engine with realtime coefficient configuration, and an ESC control server [PWM output]. An earlier version of this server was fielded in ATR5-b1.  (The fires were not the server's f...

MapOS v0.2 (alpha, first release)

The MAP Operating System (MapOS) implements the Upacket project as a network-centric kernel. Tuned for microcontroller deployment,  including a minimal scheduler and supporting architecture-specific features [timers, ADC, PWM, etc], MapOS's features include: Dynamic packet routing graph, which can be modified in realtime and (optionally) saved to nonvolatile state. Dynamic memory pools, in order to to reserve malloc()'d resources for specific purposes. A cooperative multitasking sche...

Upacket v0.2 (alpha, first release)

The Upacket (pronounced "micropacket") project aims to provide internet-quality network communications for bandwidth-, memory-, and processor-constrained environments, especially microcontroller and ARM architectures.  This first code release provides: MEP encoder and decoder implementations, to facilitate packet transmission over serial lines. MAP packet management utilities, including checksum generation/verification. MAP packet headers replace MAC, IP, and port (UDP) addressing layers a...

ATcommon v0.3 (beta, first release)

A suite of minor support libraries (C++) required by the nRF24L01P driver and several other Autonomous Tools projects newly released under the GitHub repository ATcommon. Included libraries: FixedPoint: A cheap fixed point fractional arithmetic implementation. Does not allow overflow; clamps to extremes instead. StateMachine: Borrowing from existing work, implements low-cost parallel (thread) states in a non-threaded environment. MemoryPool: Tracks and implements memory allocation lim...

Templated SPI (AVR/C++): AVR/spi.hpp v0.1

In the same vein as avr/io.hpp, I present avr/spi.hpp, a C++ class wrapper for the AVR SPI bus.  All methods are inlined and disintegrate upon compilation for maximum efficiency. Unlike io.hpp, this class has not been generalized to every AVR device.  Only the ATmega328P series and devices with the same SPI registers and pin locations are supported. Both classes are now hosted in a single GitHub repository entitled AVR_Objects. This repository is licensed under GPLv3 and later.

Nordic nRF24L01+ (nRF24L01P) driver v0.1 (alpha, first release)

Unable to locate an existing C/C++ driver that supports all of the Enhanced Shockburst functions in the Nordic nRF24L01+ (a.k.a. nRF24L01P) and multiple concurrent nRF24L01P devices, I present a C++ nRF24L01P driver for release under GPLv3 (and later).  The driver can be obtained from the GitHub repository Nordic_nRF24L01P_driver.  The driver is currently in v0.1 alpha (fresh out of the oven!). All nRF functionality is supported, such as: Dynamic packet sizes, up to 32 bytes. (The nRF...