All Projects → piconomix → Piconomix Fwlib

piconomix / Piconomix Fwlib

Licence: other
open source bare-metal C firmware and documentation for microcontrollers

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Piconomix Fwlib

Open-SAE-J1939
SAE J1939 protocol free to use for embedded systems or PC with CAN-bus
Stars: ✭ 120 (-46.9%)
Mutual labels:  avr, stm32
terminal
Terminal inside the microcontroller (cli for mcu)
Stars: ✭ 31 (-86.28%)
Mutual labels:  avr, stm32
FASTUSBasp
This is the fast avr programmer for AVR MCUs based on cheap stm32f103c8t6 board with usb-to-serial support.
Stars: ✭ 78 (-65.49%)
Mutual labels:  avr, stm32
Blog
A set of various projects based on ESP8266, ESP32, ATtiny13, ATtiny85, ATtiny2313, ATmega8, ATmega328, ATmega32, STM32 and more.
Stars: ✭ 198 (-12.39%)
Mutual labels:  stm32, avr
Logic Analyzer
Logic Analyzer, for Arduino, AVR, ESP8266 and STM32 with a very nice working processing interface, you could run it also on any Android device.
Stars: ✭ 203 (-10.18%)
Mutual labels:  stm32, avr
toolchain68k
build a toolchain for cross developement. Supports motorola m68k-elf, avr and arm-none-eabi
Stars: ✭ 18 (-92.04%)
Mutual labels:  avr, stm32
FT800-FT813
Multi-Platform C code Library for EVE graphics controllers from FTDI / Bridgetek (FT810, FT811, FT812, FT813, BT815, BT816, BT817, BT818)
Stars: ✭ 80 (-64.6%)
Mutual labels:  avr, stm32
Tinygo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
Stars: ✭ 9,068 (+3912.39%)
Mutual labels:  stm32, avr
STM32-RFM95-PCB
STM32 and AVR128 Printed Circuit Board for creating IOT nodes with the RFM95 LORA chip
Stars: ✭ 14 (-93.81%)
Mutual labels:  avr, stm32
px-fwlib
open source bare-metal C firmware and documentation for microcontrollers
Stars: ✭ 247 (+9.29%)
Mutual labels:  avr, stm32
Modm
modm: a C++20 library generator for AVR and ARM Cortex-M devices
Stars: ✭ 375 (+65.93%)
Mutual labels:  stm32, avr
Xpcc
DEPRECATED, use our successor library https://modm.io instead
Stars: ✭ 177 (-21.68%)
Mutual labels:  stm32, avr
Emuflight
EmuFlight is flight controller software (firmware) used to fly multi-rotor craft.
Stars: ✭ 184 (-18.58%)
Mutual labels:  stm32
Dirtyjtag
JTAG probe firmware for STM32F1
Stars: ✭ 183 (-19.03%)
Mutual labels:  stm32
Atmega Soldering Station
T12 Quick Heating Soldering Station
Stars: ✭ 183 (-19.03%)
Mutual labels:  avr
W25qxx
w25qxx SPI FLASH driver for stm32 HAL
Stars: ✭ 211 (-6.64%)
Mutual labels:  stm32
Jled
Non-blocking LED controlling library for Arduino and friends.
Stars: ✭ 197 (-12.83%)
Mutual labels:  stm32
Otter Iron Pro
USB-PD soldering station for JBC C245 handles.
Stars: ✭ 182 (-19.47%)
Mutual labels:  stm32
Mongoose Os
Mongoose OS - an IoT Firmware Development Framework. Supported microcontrollers: ESP32, ESP8266, CC3220, CC3200, STM32F4, STM32L4, STM32F7. Amazon AWS IoT, Microsoft Azure, Google IoT Core integrated. Code in C or JavaScript.
Stars: ✭ 2,234 (+888.5%)
Mutual labels:  stm32
Grbl Advanced
Grbl-Advanced is a no-compromise, high performance, low cost alternative for CNC milling. This version of Grbl runs on a STM32F411RE / STM32F446RE Nucleo Board. Now with backlash compensation, multi-axis and Tool Table support!
Stars: ✭ 182 (-19.47%)
Mutual labels:  stm32

MIT license

STM32L072 PX-HER0 Board now in stock at Crowd Supply! Click HERE

Introduction

https://piconomix.com

px-lib is a collection of open source C firmware and documentation for microcontrollers to develop portable bare-metal code that is vendor and architecture neutral (or easier to reuse).

It is tough to find the best compromise between lean 8-bit targets, middle-of-the-road 16-bit targets, and resource rich 32-bit targets, but this cross-platform library aims to provide a good foundation before you are forced to add target specific code and getting locked in.

Click HERE to view the complete online documentation.

Click HERE to download releases of the open source library (source code and offline documentation).

Goals

  • Teach good firmware development practices to guide the next generation of professional embedded engineers.
  • Share source code, knowledge and expertise with our global community of engineers, scientists and enthusiasts.
  • Publish concise quick start guides and tutorials to reduce the learning curve of new microcontrollers.
  • Provide a standard framework and drivers for rapid code development.
  • Minimize porting by providing unified peripheral driver APIs (to maximize device driver reuse).

My sincere hope is that seasoned veterans will pitch in and share their years of experience to mentor the future generation and raise the bar in terms of quality and quantity.

Example

Included with the library is a CLI (Command Line Interpreter) executing on an Arduino Uno R3 that creates a "Un*x Shell"-like environment so that you can experiment with GPIO, ADC, I2C and SPI using only an ANSI/VT100 terminal emulator (for example Tera Term).

Electrodragon BMP280 breakout board connected to I2C

Connect your board, fire up the CLI and verify that it works:

CLI Exlorer executing on an Arduino Uno R3

The BMP280 is found at 7-bit slave address 0x76. The chip identification register value for the BMP280 is 0x58. This confirms that you are able to write to and read from the I2C slave.

After verification, it is easy to accomplish the same in C using the library:

#include "px_i2c.h"
#include "px_board.h"

// Bosch BMP280 I2C Slave Address
#define I2C_SLA_ADR   0x76

// Create I2C Slave handle object
px_i2c_handle_t px_i2c_handle;

int main(void)
{
    uint8_t data[1];

    // Initialise board
    px_board_init();
    // Initialise I2C driver
    px_i2c_init();
    // Open handle to I2C slave device
    px_i2c_open(&px_i2c_handle, PX_I2C_NR_0, I2C_SLA_ADR);
    // START I2C write transaction and write register address
    data[0] = 0xd0;
    px_i2c_wr(&px_i2c_handle,
              data,
              1,
              PX_I2C_FLAG_START_AND_END);
    // REPEATED START I2C read transaction and read register value
    px_i2c_rd(&px_i2c_handle,
              data,
              1,
              PX_I2C_FLAG_REP_START_AND_STOP);
    // Close I2C Handle
    px_i2c_close(&px_i2c_handle);
}

License

MIT license

The MIT license has been selected to grant freedom for both open source and commercial (closed source) projects and to nurture future growth of the library. Please see the LICENSE.

Important Links

Questions or Feedback?

Questions or feedback (positive and negative) is great and will help to improve the library:

Feedback

Methods of communication:

Support

A significant amount of time has been invested to craft and refine this free open source library. If you saved development time, acquired a new skill, or advanced your career, you are welcome to support this project with a visit to the shop.

Shop Click HERE to visit the shop

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].