Собрал вот такую схему. Сижу битый час безуспешно пытаюсь запустить. Принцип работы примерно понятен, но возникло несколько вопросов. Например, насколько я понимаю, для записи данных ножка микросхемы ST_CP (защелка) должна быть притянута к земле, то есть LOW. Но при передачи данных она постоянно в HIGH, согласно схеме сигналов. Каким образом данные должны попадать в регистр в таком случае? Механизм передачи нулей и единиц более мене понятен, для нуля сигнал на DS должен быть LOW при подаче HIGH на SH_CP, при единице, соответственно HIGH, но добиться синхронизации пока не могу. Подаю разной продолжительности перепады но увы. Больше всего смущает latch конечно, не стыкуются мои знания по регистру с этим способом его защелкивания.
Данные сдвигаются сигналом SHIFT (ST_SH). Что мешает воспользоваться частью библиотеки от QuadDisplay? Регистр запоминает бит и байт по переднему фронту SHIFT (SH_CP) и LATCH (ST_CP)
DelayWire.h Код (Text): #ifndef DELAYWIRE_H #define DELAYWIRE_H #include <Arduino.h> void dwSendByte(uint8_t pin, byte data, byte n = 8); void dwLatch(uint8_t pin); #endif DelayWire.cpp Код (Text): #include "DelayWire.h" void dwSendByte(uint8_t pin, byte data, byte n) { for (byte i = n; i > 0; i--) { if (data & 1) { noInterrupts(); digitalWrite(pin, LOW); digitalWrite(pin, HIGH); interrupts(); delayMicroseconds(30); } else { digitalWrite(pin, LOW); delayMicroseconds(15); digitalWrite(pin, HIGH); delayMicroseconds(60); } data >>= 1; } } void dwLatch(uint8_t pin) { digitalWrite(pin, LOW); delayMicroseconds(100); digitalWrite(pin, HIGH); delayMicroseconds(300); }
Спасибо за код, разобрался! Оказывается я все делал правильно кроме одного места, а именно при установке единицы делал задержку 5мкс, но видимо даже этого много, как только убрал (подсмотрев пример) так все заработало. Единственная проблема: в том и другом случае последний бит получается нулевым, т.к. вероятно закидывается вместе с защелкой.
А вообще штука нестабильная, очень капризная, есть смысл использовать только в случае крайней необходимости при критической нехватке ножек. Но в качестве учебного материала покатит.