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.