mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
.. | ||
.github | ||
examples | ||
test | ||
.arduino-ci.yml | ||
CHANGELOG.md | ||
FastShiftInOut.cpp | ||
FastShiftInOut.h | ||
keywords.txt | ||
library.json | ||
library.properties | ||
LICENSE | ||
README.md |
FastShiftInOut
Arduino library for AVR optimized shiftInOut (simultaneously).
Related libraries
- https://github.com/RobTillaart/FastShiftIn
- https://github.com/RobTillaart/FastShiftOut
- https://github.com/RobTillaart/ShiftInSlow
- https://github.com/RobTillaart/ShiftOutSlow
Description
FastShiftInOut is a class that can send and receive bytes simultaneously. In that sense it mimics a SPI bus.
Experimental.
Performance
performance of write()
version | UNO (us) | ESP32 (us) |
---|---|---|
0.1.0 | 181.08 | 4.32 |
0.1.1 | 26.84 | 4.32 |
0.1.2 | 26.84 | no data |
0.1.3 | 25.52 | 4.32 |
Interface
#include "FastShiftInOut.h"
Functions
bitOrder = { LSBFIRST, MSBFIRST };
- FastShiftInOut(uint8_t dataIn, uint8_t dataOut, uint8_t clockPin, uint8_t bitOrder = LSBFIRST) Constructor.
- uint8_t write(uint8_t data) reads and writes simultaneously.
- uint8_t lastWritten(void) returns last byte written.
- uint8_t lastRead(void) returns last byte read.
- bool setBitOrder(uint8_t bitOrder) bitOrder must be LSBFIRST or MSBFIRST.
- uint8_t getBitOrder(void) idem.
- uint8_t writeLSBFIRST(uint8_t data) optimized version, in practice almost no difference.
- uint8_t writeMSBFIRST(uint8_t data) optimized version, in practice almost no difference.
Future
Must
- documentation
- follow FastShiftIn and FastShiftOut
should
could
- void ignoreRead()
- add Print interface?