Home

Awesome

<div align = center>

digitalWriteFast

Arduino library for faster digitalWrite() using direct port manipulation and macro for ease in pin assignments for constant pin numbers. It also provides faster pinMode() and digitalRead() functions as well as it adds a digitalToggleFast() function.

Badge License: BSD-3-Clause     Badge Version     Badge Commits since latest     Badge Build Status     Badge Hit Counter

Available as Arduino library "digitalWriteFast".

Button Install     Button Changelog

</div>

If you find this library useful, please give it a star.

🌎 Google Translate

<br/>

This is a fork of the subtree https://github.com/watterott/Arduino-Libs/tree/master/digitalWriteFast.

If pin number is no compile time constant, or the platform is not supported, then the regular Arduino functions digitalWrite() etc. are called.

Usage

Include the library: #include <digitalWriteFast.h>

Macro definitions:

Parameters:

<br/>

Correct usage detection

Defining THROW_ERROR_IF_NOT_FAST would cause the macro to return an error during compilation, if the parameter is a variable and thus regular digital* functions must be called. This notifies the programmer the specific line where code is still slow.

<br/>

Speed

For a 16 MHz Uno digitalWrite() is speed up from 5.8 µs to 125 ns, able to generate a 4 MHz signal instead of 86 kHz. More info in: /NOTES/NOTES.md

This is the waveform generated with the Timing example. Timing example signal

Compatibility

If you use megaTinyCore, you cannot use "#include digitalWriteFast.h" because megaTinyCore has it own digitalWriteFast function set, except digitalToggleFast(). <br/>

Revision History

Version 1.3.0

Version 1.2.1

Version 1.2.0

Version 1.1.0

Reference

This documentation is based on https://github.com/NicksonYap/digitalWriteFast/