Сдвиговый регистр. Помогите увеличить входы.

barabus
Offline
Зарегистрирован: 17.07.2015

#define O_DATA  11  //DATA for output
#define O_LATCH 10  //ST_CP for output
#define O_CLOCK 9   //SH_CP for output
#define CLKUS   1 


byte dataInput;

void setup() {

  pinMode(O_DATA,INPUT);
  pinMode(O_LATCH,OUTPUT);
  pinMode(O_CLOCK,OUTPUT);
  Serial.begin(9600);

}

void loop() 
{ 

    registerRead(dataInput);
    Serial.println("-------------");
    delay(2000); 

}

void registerRead(byte data) {
dataInput = 0; 
digitalWrite(O_LATCH,HIGH);
for (int i=7; i>=0; i--){ 
digitalWrite(O_CLOCK,HIGH); 
delayMicroseconds(CLKUS); 
data |= (digitalRead(O_DATA) ? (1<<i) : 0);
delayMicroseconds(CLKUS); 
digitalWrite(O_CLOCK,LOW); 
if (i==7) digitalWrite(O_LATCH,LOW); // Serial Mode 

Serial.print (i);
Serial.print ("=");
Serial.print (data, BIN); 
Serial.println("");
delay(1000); 
} 
}

 

barabus
Offline
Зарегистрирован: 17.07.2015

Q0 и Q1 зацепил на 3,3 вольта (HIGH), т.е. хотя бы два бита "1" должны стоять рядом

Монитор выдает такую билиберду:

7=10000000
6=10000000
5=10000000
4=10010000
3=10010000
2=10010100
1=10010100
0=10010101
-------------
7=10000000
6=10000000
5=10100000
4=10100000
3=10101000
2=10101000
1=10101000
0=10101001
-------------
7=0
6=1000000
5=1000000
4=1000000
3=1001000
2=1001000
1=1001010
0=1001010
-------------
7=10000000
6=10000000
5=10000000
4=10010000
3=10010000
2=10010100
1=10010100
0=10010101
-------------
7=10000000
6=10000000
5=10100000
4=10100000
3=10101000
2=10101000
1=10101000
0=10101001
-------------
7=0
6=1000000
5=1000000
4=1000000
3=1001000
2=1001000
1=1001010
0=1001010
-------------
 
Помогите разобраться почему
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

1 -  проанализировать билиберду и понять чё не так
2 -  проанализировать весь код и понять чё не так

barabus
Offline
Зарегистрирован: 17.07.2015

т.е. для Вас все предельно ясно и Вы призываете меня пораскинуть мозгами? Я уже сломал мозг :-) Или просто обозначаете алгоргоритм моих дальнейших действий?

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

я и не вникал в код :(

да , второе...

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

вы не прописали - данные откудова и куда идут ?

Q0 и Q1 зацепил на 3,3 вольта (HIGH
это про чё ?

barabus
Offline
Зарегистрирован: 17.07.2015

Входы Q0 и Q1 микросхемы 74HC597 соеденил с лог. Единицей (3,3в), типа кнопка нажата, а остальные висят.

barabus
Offline
Зарегистрирован: 17.07.2015

Нет больше мыслей? Что я делаю не так?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

barabus,  этот скетч от HC597 ? Вот тут есть тоже пример для этого чипа, и там ещё фигурирует сигнал паралельной загрузки, которого в этом скетче я не вижу..

barabus
Offline
Зарегистрирован: 17.07.2015

Да, в качестве сдвигового регистра используется 74HC597.. Информации с примерами кода для этого чипа крайне мало. Вечерком попробую использовать пин параллельной загрузки. О результатах отпишусь.

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

Информации с примерами кода для этого чипа крайне мало.
...но есть много примеров для 
74HC595 , а он с 74HC597 - зеркальный брат
переделать код записи в 595 в код опроса 597 - довольно просто :)