74HC595 - не фиксирует..
- Войдите на сайт для отправки комментариев
Чт, 17/11/2011 - 13:52
Подозреваю - дело в логике работы. В общем, микросхема MM74HC595N, подключена вот так.
Код:
while (digitalRead(KEY_BACK) != LOW) { registerWrite8(0, HIGH); registerWrite8(3, HIGH); delay(2000); registerWrite8(0, LOW); registerWrite8(3, LOW); delay(2000); }//while // Этот метот записывает байт в регистр void registerWrite8(int whichPin, int whichState) { // инициализируем и обнуляем байт byte bitsToSend = 0; //Отключаем вывод на регистре digitalWrite(latchPin, LOW); // устанавливаем HIGH в соответствующем бите bitWrite(bitsToSend, whichPin, whichState); // проталкиваем байт в регистр shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend); // "защелкиваем" регистр, чтобы байт появился на его выхода digitalWrite(latchPin, HIGH); }
Проблема - при втором и последующих вызовах registerWrite8 предыдущее состояние пинов сбрасывается.
Микросхему изначально криво подключил. Но вроде живая, работает же в остальном.
На пины 0, 3 подключены светодиоды. Выглядит это так: быстренько моргнет светодиод 0 и тухнет, загорается светодиод 3.
Видимо, мне надо активные выходы этой микросхемы держать в переменной и подменять биты, чтобы активировать или дезактивировать нужные выходы? То есть формировать строку управления сразу для всех выходов?
совсем зенки то повылазили. bitsToSend обнуляет же постоянно. Перенес инициализацию вверх - все гуд.
Можно ли что нить сделать чтоб при включании питания на выходах сабжа не появлялось напряжение? появляется на полсекунды и при ресете на 0,1 примерно
Да, можно. RC-цепочка - от + через 100 mkF через 10kOm на землю, среднюю точку - на ногу OE.