fix input shift register reading
This commit is contained in:
@ -22,6 +22,12 @@ public:
|
|||||||
const unsigned char clk, const unsigned char serOut, const unsigned char parallelLoad):
|
const unsigned char clk, const unsigned char serOut, const unsigned char parallelLoad):
|
||||||
_port(portReg), _pin(pinReg), _pinSerOut(serOut), _pinClk(clk), _pinParallelLoad(parallelLoad)
|
_port(portReg), _pin(pinReg), _pinSerOut(serOut), _pinClk(clk), _pinParallelLoad(parallelLoad)
|
||||||
{
|
{
|
||||||
|
if constexpr(invert)
|
||||||
|
*_port &= ~(1<<_pinParallelLoad);
|
||||||
|
else
|
||||||
|
*_port |= (1<<_pinParallelLoad);
|
||||||
|
|
||||||
|
read();
|
||||||
}
|
}
|
||||||
bool getBit(unsigned char bit)
|
bool getBit(unsigned char bit)
|
||||||
{
|
{
|
||||||
@ -34,13 +40,11 @@ public:
|
|||||||
{
|
{
|
||||||
if constexpr(invert)
|
if constexpr(invert)
|
||||||
{
|
{
|
||||||
*_port &= ~(1<<_pinParallelLoad);
|
|
||||||
*_port |= (1<<_pinParallelLoad);
|
*_port |= (1<<_pinParallelLoad);
|
||||||
*_port &= ~(1<<_pinParallelLoad);
|
*_port &= ~(1<<_pinParallelLoad);
|
||||||
|
|
||||||
for(unsigned char i = 0; i < BITS; ++i)
|
for(unsigned char i = 0; i < BITS; ++i)
|
||||||
{
|
{
|
||||||
*_port &= ~(1 << _pinClk);
|
|
||||||
bool value = *_pin & (1 << _pinSerOut);
|
bool value = *_pin & (1 << _pinSerOut);
|
||||||
if constexpr(invertInput)
|
if constexpr(invertInput)
|
||||||
value = !value;
|
value = !value;
|
||||||
@ -48,14 +52,13 @@ public:
|
|||||||
data[i/8] |= (1<<(i%8));
|
data[i/8] |= (1<<(i%8));
|
||||||
else
|
else
|
||||||
data[i/8] &= ~(1<<(i%8));
|
data[i/8] &= ~(1<<(i%8));
|
||||||
|
*_port &= ~(1 << _pinClk);
|
||||||
*_port |= (1 << _pinClk);
|
*_port |= (1 << _pinClk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*_port |= (1<<_pinParallelLoad);
|
|
||||||
*_port &= ~(1<<_pinParallelLoad);
|
*_port &= ~(1<<_pinParallelLoad);
|
||||||
*_port |= (1<<_pinParallelLoad);
|
|
||||||
|
|
||||||
for(unsigned char i = 0; i < BITS; ++i)
|
for(unsigned char i = 0; i < BITS; ++i)
|
||||||
{
|
{
|
||||||
@ -69,6 +72,7 @@ public:
|
|||||||
data[i/8] &= ~(1<<(i%8));
|
data[i/8] &= ~(1<<(i%8));
|
||||||
*_port &= ~(1 << _pinClk);
|
*_port &= ~(1 << _pinClk);
|
||||||
}
|
}
|
||||||
|
*_port |= (1<<_pinParallelLoad);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user