mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
.. | ||
.github/workflows | ||
examples/shiftInSlow_demo | ||
test | ||
.arduino-ci.yml | ||
keywords.txt | ||
library.json | ||
library.properties | ||
LICENSE | ||
README.md | ||
ShiftInSlow.cpp | ||
ShiftInSlow.h |
ShiftInSlow
Arduino library for shiftIn with build-in delay - e.g. for 74HC165
A library for shiftOutSlow also exist.
Description
shiftInSlow is an experimental library that has a build in delay (in microseconds) that allows tuning the time per bit. This allows one to improve reliability e.g. when using longer lines.
The datapin and clockpin are set in the constructor, the delay is settable per byte send to be able to optimize runtime.
Performance
The performance of read() with a delay of 0 microseconds is slower than the default Arduino shiftIn() due to some overhead.
The delay requested is split in two (expect rounding errors) to have "nice" looking pulses.
Interface
The interface exists of the following functions:
- ShiftInSlow(datapin, clockpin, bitorder = LSBFIRST) constructor.
- int read(void) reads a new value
- int lastRead() returns last value read
- void setDelay(uint16_t microseconds) set delay per bit from 0 .. 65535 microseconds.
- uint16_t getDelay() returns the set delay in microseconds.
- bool setBitOrder(bitOrder) set LSBFIRST or MSBFIRST. Returns false for other values.
- uint8_t getBitOrder(void) returns LSBFIRST or MSBFIRST
Notes
- to be tested
Operation
See examples