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):
|
||||
_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)
|
||||
{
|
||||
@ -34,13 +40,11 @@ public:
|
||||
{
|
||||
if constexpr(invert)
|
||||
{
|
||||
*_port &= ~(1<<_pinParallelLoad);
|
||||
*_port |= (1<<_pinParallelLoad);
|
||||
*_port &= ~(1<<_pinParallelLoad);
|
||||
|
||||
for(unsigned char i = 0; i < BITS; ++i)
|
||||
{
|
||||
*_port &= ~(1 << _pinClk);
|
||||
bool value = *_pin & (1 << _pinSerOut);
|
||||
if constexpr(invertInput)
|
||||
value = !value;
|
||||
@ -48,14 +52,13 @@ public:
|
||||
data[i/8] |= (1<<(i%8));
|
||||
else
|
||||
data[i/8] &= ~(1<<(i%8));
|
||||
*_port &= ~(1 << _pinClk);
|
||||
*_port |= (1 << _pinClk);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*_port |= (1<<_pinParallelLoad);
|
||||
*_port &= ~(1<<_pinParallelLoad);
|
||||
*_port |= (1<<_pinParallelLoad);
|
||||
|
||||
for(unsigned char i = 0; i < BITS; ++i)
|
||||
{
|
||||
@ -69,6 +72,7 @@ public:
|
||||
data[i/8] &= ~(1<<(i%8));
|
||||
*_port &= ~(1 << _pinClk);
|
||||
}
|
||||
*_port |= (1<<_pinParallelLoad);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
Reference in New Issue
Block a user