74HC595 - не фиксирует..

whoim
Offline
Зарегистрирован: 03.11.2011

 Подозреваю - дело в логике работы. В общем, микросхема 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 предыдущее состояние пинов сбрасывается.

Микросхему изначально криво подключил. Но вроде живая, работает же в остальном.

whoim
Offline
Зарегистрирован: 03.11.2011

 На пины 0, 3 подключены светодиоды. Выглядит это так: быстренько моргнет светодиод 0 и тухнет, загорается светодиод 3.

whoim
Offline
Зарегистрирован: 03.11.2011

 Видимо, мне надо активные выходы этой микросхемы держать в переменной и подменять биты, чтобы активировать или дезактивировать нужные выходы? То есть формировать строку управления сразу для всех выходов?

whoim
Offline
Зарегистрирован: 03.11.2011

 совсем зенки то повылазили. bitsToSend обнуляет же постоянно. Перенес инициализацию вверх - все гуд.

Можно ли что нить сделать чтоб при включании питания на выходах сабжа не появлялось напряжение? появляется на полсекунды и при ресете на 0,1 примерно

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Да, можно. RC-цепочка - от + через 100 mkF через 10kOm на землю, среднюю точку - на ногу OE.