LiquidCystalIO with mbed over i2c or pins

By dave on August 2, 2020

LiquidCrystalIO is now also compatible with mbed boards. It supports regular mbed pins, I2C backpacks based on PCF8574 and MCP23017 based connections. You can adapt any of the Arduino examples for mbed very easily, as the API is 99% the same. Examples showing these use cases Hello Mbed I2C PCF8574 example Back to the main page

EEPROM implementations that are seamless between 8 and 32 bit

By dave on July 22, 2018

If like me you use both 8 bit AVR and 32 bit boards, you’ve probably already noticed that there’s no EEPROM support on some 32 bit boards. I think that’s quite unfortunate as EEPROM storage is very useful for many applications. Relying on memory backup like many systems today do, is nowhere near as reliable (a flat battery loses everything). Further, I’ve even seen discussions where people suggest using an area of program Flash as an EEPROM, I don’t personally like it as flash write cycles are generally an order of magnitude lower than EEPROM, but it’s now supported via the EEPROM class wrapper.

Working with Menu Item types in tcMenu

By dave on March 31, 2018

Many embedded applications need to present status and allow users to manage settings. TcMenu provides first class support for both presenting status and managing configuration/settings using menu items. It is possible to use with and without a local user interface. All menu item types can be accessed remotely, and we have a remote API, UI solutions, and connectors to commercial IoT endpoints for that. Menu item arrangement and storage Each menu item is part of a tree, if you are unfamiliar with trees, there’s a little terminology worth learning.

PGA2310 Volume Control device for IoAbstraction

By dave on May 22, 2023

PGA2310 Volume Control device Provides a simple analog device that can be used to control a PGA2310 volume device. Left channel is 0 and right channel is 1. The device should be connected on the SPI bus as usual. This should work with Arduino now, and mbed in a patch release coming soon. To use first include the header: #include <extras/Pga2310VolumeControl.h> Then initialise globally: SPIWithSettings spiSettings(&SPI, CS_PIN); Pga2310VolumeControl pga2310(spiSettings); And to use it as a floating point value

Simple Test - unit test framework for Arduino and mbed

By dave on November 16, 2022

Simple test is a no-frills unit testing framework that works on Arduino and mbed. It sits on top of IoAbstraction and SimpleCollections and works on a very wide range of Arduino boards and mbed. It uses a similar method of test creation to AUnit, and you’ll probably find much of this very familiar. Why did we write this? We really liked using AUnit library, and had four sets of embedded tests that were based on that library.

Arduino text utilities in IoAbstraction

By dave on November 15, 2022

IoAbstraction comes with a few text utilities that can be helpful when rendering text as raw character arrays. Internally, IoAbstraction and TcMenu DO NOT use any string objects to avoid runtime memory allocation. See the complete text utility documentation To use the text utilities you need to include the header #include "TextUtilities.h" Often times, we need to build text up within a buffer, so it is useful to have a series of functions that can work on a buffer, appending to the end of the buffer.

Arduino logging using io-logging

By dave on August 10, 2022

Logging is part of the IoAbstraction offering, it has a moderately complete logging framework that is still lightweight enough to work on small boards. It can easily be turned off completely for very small boards too. Both IoAbstraction and tcMenu use this logging to provide information about internal state and operations. The logging is fully integrated into both IoAbstraction and TcMenu, and this change is backward compatible at a code level.

Task Manager - Spin Lock guide

By dave on April 20, 2021

Task Manager supports the concept of Spin Locks to protect sensitive asynchronous operations from becoming interleaved. For example, to protect sensitive blocks of code. Be very aware that this does not include a memory barrier. A spin lock loops waiting for the lock to become available, you can either spin for a period of time, or until the lock is acquired. While waiting for the lock in the spin, TASKS DO NOT RUN, and you must never call yieldForMicros while holding a lock.

IoAbstraction - Cross platform build support

By dave on December 4, 2020

Arduino library compatibility matrix and build time settings General Arduino On all devices we try to configure the device to the highest precision possible, and provide read and write methods based on float values between 0 and 1. Notes for mbed For mbed we support mbed V5 and V6 Bare-Metal and RTOS. Pins are managed using the underlying gpio methods. Interrupts are managed using InterruptIn. Analog input PWM output, and DAC output are all supported, DAC output is only enabled when the board has an onboard DAC.

This site uses cookies to analyse traffic, and to record consent. We also embed Twitter, Youtube and Disqus content on some pages, these companies have their own privacy policies.

Our privacy policy applies to all pages on our site

Should you need further guidance on how to proceed: External link for information about cookie management.

Send a message
X

Please use the forum for help with UI & libraries.

This message will be securely transmitted to our servers.