Hallo,
ich habe Probleme 4 Stück 74HC165 Schieberegister (in einer Reihe)
einzulesen.
Die Routine sieht so aus:
1
byte i;
2
byte i1;
3
byte Sbyte;
4
byte shiftNo;
5
uint32_t val;
6
#define BYTES_VAL_T unsigned int
7
BYTES_VAL_T bytesVal = 0;
8
shiftNo = 24;
9
for (i1 = 0; i1 < 4; i1++)
10
{
11
Sbyte = val >> shiftNo;
12
for (i = 0; i < 8; i++)
13
{
14
digitalWrite(loadPin, LOW);
15
delayMicroseconds(5);
16
digitalWrite(loadPin, HIGH);
17
Data = digitalRead(data_in);
18
bytesVal = !!(Sbyte & (1 << (7 - i)));
19
digitalWrite(clockPin, HIGH);
20
digitalWrite(clockPin, LOW);
21
Serial.print(Data,BIN);
22
}
23
shiftNo -= 8;
24
}
was ich als Ergebnis bekomme sind immer
11111111111111111111111111111111
obwohl die Eingänge alle mit 2K gegen GND runtergezogen werden.
Ich hatte vorher 100K Pulldowns dran, aber daran lag es nicht.
Die Schaltung hat auch noch neben den 4x74HC165 4x 74HC595 als Ausgabe,
diese funktionieren prima!
Clock wird von beiden benutzt, also von den 595 und von den 165ern.
Weiss jemand einen Rat?
Gruß,
Wolfram.
Hi,
es tut mir leid, Deine Routine und auch meine ursprüngliche
FUNKTIONIERT!
Ich habe beim löten einen Fehler gemacht und anstatt den letzten Q
Ausgang den Clock ausgelesen!
Blöder Fehler....
Alles super! Deine Routine ist schön kurz und vereinfacht!
Ich danke Euch (auch den ersten beiden Kommentaren!)
Gruß,
Wolfram.
Peter, so sieht mein Listing jetzt aus,
einziges Problem ist die Reihenfolge der Bits, die müssten genau
andersrum sein, könntest du das optimieren/anpassen?
>einziges Problem ist die Reihenfolge der Bits, die müssten genau>andersrum sein, könntest du das optimieren/anpassen?
Oh Mann, mit ein bisschen nachdenken kommt man da doch selber drauf:
Wolfram F. schrieb:> Ob die ursprünglich verwendeten 100K Pulldowns an den Eingängen der> 74HC165 auch reichen würden?
Hallo Wolfram,
für die ICs ist das kein Problem, die haben einen Lekstrom von 1uA an
den Eingängen. Problematisch sind sind die Kontakte davor, die brauchen
einen Mindeststrom um ein sauberes Signal abzugeben.
Hatte dasselbe Problem mit vielen 74HC165 dass wenn alle Eingänge High
sind, ein relativ grosser Stromverbrauch entsteht. Habe glaub ich 47k
genommen, als Komromiss.
Gruss Chregu
@holger: danke, ich hatte val |= 0x80000000;
vergessen...
@Christian:
Was meinst Du mit "Problematisch sind sind die Kontakte davor" ?
Ich habe nur die Pulldowns an den 165ern dann gleich Stiftleisten....