...
 
Commits (2)
**[Get the daily build here!](http://dailyprog.org/~ryukoposting/projects/PC-GPIO/)**
### PC-GPIO: API for manipulating microcontroller IO from your computer
The PC-GPIO API is a multi-platform API for interfacing with microcontroller IO from a
host computer running Windows, OSX, Linux, or *BSD. The host computer talks to the
The PC-GPIO API is a multi-platform API for interfacing with microcontroller IO from a
host computer running Windows, OSX, Linux, or BSD. The host computer talks to the
microcontroller over TTL serial at 115.2kbaud.
Currently, the API allows the user to:
......@@ -21,40 +21,37 @@ PC-GPIO is...
- Lightweight: default PC-GPIO microcontroller firmware generally uses very little of the
slave microcontroller's resources. Customized firmware is easy to make, and can utilize
a sizable amount of the microcontroller's resources without interfering with PC-GPIO.
- Cross-compatible: PC-GPIO requires no heap-allocated memory, and communicates over
- Cross-compatible: PC-GPIO requires no heap-allocated memory, and communicates over
standard TTL serial, meaning it is compatible with virtually any modern microcontroller.
The host-side PC-GPIO API has absolutely no external dependencies except for the
The host-side PC-GPIO API has absolutely no external dependencies except for the
low-level libraries provided by the user's operating system.
- Industrial-Strength: error and safety checks abound in the PC-GPIO API, with virtually
all functions returning some form of status message. Checksums on every message mean
that errors are found before they can have unwanted effects on IO. Because of the lack
of heap usage, risk of memory fragmentation is eliminated, which is helpful in
of heap usage, risk of memory fragmentation is eliminated, which is helpful in
environments where indefinite uptime is essential.
- Asynchronous: Send methods to the microcontroller, get callbacks from the microcontroller
in a user-defined handler function.
### Supported Operating Systems
- Currently Supported:
- The UNIXes, including Linux, OSX, and *BSD
- The UNIXes, including Linux, OSX, and the BSD's
- Planned:
- Windows (framework is already there, just need to write the platform-specific code)
### Natively Supported Microcontrollers
Literally any microcontroller with a UART peripheral that can run at 115200 baud can be
used with PC-GPIO with just a few dozen lines of code. However, implementations already
used with PC-GPIO with just a few dozen lines of code. However, implementations already
exist for the microcontrollers listed below:
- Arduino
- DUE: in progress. Supported natively in the Arduino IDE. Will also be supported
without Arduino library dependencies via direct support for the SAM3X8E.
- UNO: planned.
- Atmel
- SAM3X4E, SAM3X8E: planned.
- Microchip (PIC)
- PIC24FJ16GA002, PIC24FJ32GA002, PIC24FJ48GA002, PIC24FJ64GA002: planned.
- PIC24FJ16GA004, PIC24FJ32GA004, PIC24FJ48GA004, PIC24FJ64GA004: planned.
- Infineon
- XMC1404: planned.
- DUE: fully supported. Supported natively using firmware that will be uploaded
sometime in the coming weeks, and will be updated as additions to the API are made.
For the time being, support for PIC microcontrollers is on the back burner.
Microchip's hot garbage MPLAB X IDE's automatic makefile generation is insufficient for
PC-GPIO's multi-platform library architecture, and it does not allow the user to directly
manipulate the makefiles in the project without the changes being overwritten.
### Using the Library
Adding PC-GPIO to a CMake project:
......@@ -81,7 +78,7 @@ Adding PC-GPIO to an Arduino project:
3. In this directory, extract the PC-GPIO source into a folder called "PC-GPIO"
So there will be 2 things in the project folder, the .ino file and a folder
called PC-GPIO.
4. Import PC-GPIO into your arduino project by adding `#include "PC-GPIO/pcgpio_global.h"
4. Import PC-GPIO into your arduino project by adding `#include "PC-GPIO/pcgpio_global.h"`
To the top of your arduino code.
### License
......