Forum: Mikrocontroller und Digitale Elektronik Schieberegister Frage


von Lars (Gast)


Lesenswert?

Hallo,

da ich mehr Output-Pins benötige wollte ich diese über ein 
Schieberegister (74*164) realisieren. Wenn ich das Datenblatt richtig 
gelesen habe, werden dabei die Bits tatsächlich "durchgeschoben" und 
nicht erst nachdem alle Bits "geladen" wurden die Outputs entsprechend 
gesetzt.

Also wenn ich da z.B. 8 Bit reinschicke, dann ändern sich alle 8 Outputs 
8mal bis ich sie dann auf den gewünschten Werten habe. Das ist aber 
nicht erwünscht. Wie kann ich das von mir gewünschte Verhalten (während 
dem "schicken" der 8 Bit sollen sich die Outputs nicht ändern, erst wenn 
die 8 Bit komplett übertragen wurden geschieht das).

Natürlich könnte ich eine 8Porterweiterung mit I2C nehmen, leider ist 
die aber alles andere als billig (zumindest nicht vergleichbar mit dem 
Schieberegister ;)). Falls es da doch billigere gibt wäre ich für 
Typenbezeichnungen dankbar.

Lars.

von Lanius (Gast)


Lesenswert?

74xx594 nehmen

von Lars (Gast)


Lesenswert?

Also ein 74xx594 habe ich bei Reichelt/Conrad nicht gefunden. Bei segor 
kostet das auch immerhin 5euro. Im Vergleich zu einem 74xx164 mit ca. 
30cents denke ich ich werde dass mit einer etwas aufwendigeren 
Logikschaltung lösen wenn möglich. Zumindest bei einer meiner zwei 
Anwendungen ist das möglich.

Sehe gerade es gibt noch den 74xx595 den gibts bei Reichelt auch fuer 
30cents. Ich werde mir da mal ein Datenblatt besorgen - kann mir jemand 
sagen was der Unterschied zwischen 74xx594 und 74xx595 ist ?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Keine Ahnung, aber ich verwende den HC595 zusammen mit dem Hardware-SPI 
der AVRs ohne Probleme. Codebeispiel auf 
http://www.mikrocontroller.net/avr-gcc-faq.htm

Gruß
Andreas

von ERDI - Soft (Gast)


Lesenswert?

Hi,

Dein Schieberegister sollte auf jeden Fall einen Freigabeeingang 
besitzten.
Nur so kannst du den Wert verändern, ohne gleich die Ausgänge zu 
verändern. Allerdings gehört dann noch ein Zwischenspeicher dazu. (Weiß 
leider keine Typbezeichnung auswendig. Solche Teile gibts aber.)
Wenn nicht, nimm doch nen 74373 oder 74573 Latchbaustein. Brauchst halt 
ein paar Leitungen mehr, aber mit 11 Leitungen kannst du immerhin schon 
8 dieser Latchteile adressieren. (Brauchste halt noch nen Adressdekoder. 
Irgendein BCD nach dezimal-Dekoder oder sowas in der Art.) Diese 
Möglichkeit ist dazu noch viel leichter zu programmieren.


Bis denn, ERDI - Soft.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das trifft auf den HC595 zu.

Nachtrag: das von mir genannte Beispiel ist natürlich ein Software-SPI, 
aber mit dem Hardware-SPI habe ich den 595 auch schon verwendet.

von Lars (Gast)


Lesenswert?

@Andreas: ich habe nur 3 Leitungen zur Verfügung (Clock, Data, Reset). 
Brauche ich fuer den 595 nicht noch einen 2.Clock für das "Storage 
Register" ?! Das Datenblatt gibt's ja hier unter "Datenblätter" aber ich 
bin nicht so richtig schlau geworden. Ich (wollte) nach einem Reset 
genau 8 Bits senden und die sollten dann an den Ausgängen des 
Schieberegisters (bzw 595) anliegen.

Ich werde mal sehen ob ich nicht noch wo ein ausführlicheres Datenblatt 
finden kann :)

von Siegfried (Gast)


Lesenswert?

Reset braucht man nicht.
Mit Clock und Data schiebt man die x mal 8 Bit hinein und mit dem Latch 
werden die Informationen gleichzeitig auf die Ausgänge geschaltet. 
Sollte vorher irgentwas undefiniertes im Latch stehen, dann wird das 
durch die erste auszugebende Information auf einen definierten Stand 
gebracht.

5 Euro Kaufpreis kann ich nicht nachvollziehen. Im letzten Jahr hab ich 
für die Dinger so ca. 1 Mark bezahlt.

Siegfried

von Lanius (Gast)


Lesenswert?

Texas Instruments hat gute Datenblätter und einen sehr guten Service!

nur mal so...

von Lanius (Gast)


Lesenswert?

achso, um die Unterschiede zu klären:

74xx594  (gibt es wirklich, zB bei TI)  2-State Ausgänge
74xx595  3-State Ausgänge
74xx596  Open-Collector

alle drei haben ein Output-Latch.

von Lars (Gast)


Lesenswert?

Bestens für meine Zwecke geeignet: 74xx259, 8bit addressable latch. 
Schade das es das nicht mit 16bit gibt (oder habe ich es nur mal wieder 
nicht finden können ?).

von Lanius (Gast)


Lesenswert?

wenn du meinst...
Ich denke du hast nur drei Leitungen frei, die brauchst du schon zum 
Adressieren, oder?

Ich guck mir nochmal das Datenblatt an, meine im Moment aber das der 
xx259  acht einzelne Latches hat, brauchst du da nicht mehr Leitungen?

Warum nimmst du denn jetzt nicht den 74xx595? kratz an Kopf

von Lars (Gast)


Lesenswert?

Ich verwende einen **164 bei dem der Port8 als "High-Enable" Ausgang 
verwendet wird. D.h. ich kann effektiv nur 7 der 8 Leitungen nutzen da 
das 8. als Information dient dass die anderen 7 Werte gültig sind. Mit 
diesen 7 Leitungen steuere ich dann 2 **259 an und habe damit meine 16 
tatsächlichen Ausgänge.
Und bleibe meinem Buskonzept mit 3 Leitungen (Data, Clock, Reset) treu 
:)

von Siegfried (Gast)


Lesenswert?

Hallo Lars,

wenn ich mir Deine ursprüngliche Fragestellung ansehe, dann erfüllt der 
74***595 genau Deine Anforderungen. Zudem kann man diese Teile auch noch 
kaskadieren. D.h. 8 - 16 oder mehr Bits reinschieben, ohne das eine 
Statusänderung am Ausgang erfolgt, Latch aktivieren und alle Ausgänge 
haben auf einen Schlag die reingeschobenen Informationen.

Die Dinger gibts überigens auch zum Einlesen mit Input-Latch.

Unterm Strich spendierst Du 3 Portleitungen und kannst X mal 8 Bit 
ausgeben.

Siegfried

von Lars (Gast)


Lesenswert?

mangels Platz auf der Platine werde ich wohl doch den **595 nehmen 
müssen, es ist auch mit meinem Bus verträglich ich muss dann nur die 
Leitungen anders belegen :)
Jetzt muss ich nochmal die 2 bereits fertigen Buskomponenten prüfen ob 
das bei denen nicht zu Problemen führt aaaahhhhh ;)

von Lanius (Gast)


Angehängte Dateien:

Lesenswert?


>**595 nehmen müssen

was heisst denn müssen???

ich hab´s nochmal gezeichnet, zeig mir mal wie es einfacher geht, bitte.

von Heiko (Gast)


Lesenswert?

Hi,

was für eine Layoutsoftware benutzt Du denn ?

Gruß
Heiko

von Siegfried (Gast)


Lesenswert?

Mein Acrobat-Reader behauptet, die PDF-Datei sei beschädigt. :-(

Siegfried

von Lars (Gast)


Lesenswert?

@Heiko: EAGLE (http://www.cadsoft.de)

@Lanius und Rest zum besseren Verständnis des Problems:
Ich schicke über meinen BUS (3 Leitungen) 8 Bit. 3 Bit davon dienen zur 
Angabe des Zielboards, 4Bit zur Angabe des Schalters auf dem Board und 
1Bit dient zur Angabe der Schalterstellung (on/off).
Bisher war Abfolge wie folgt: die 8 Bit gehen in ein Schieberegister 
(*164) dann werden die obersten 3 Bits über eine Logikschaltung mit der 
auf dem Board (per Dip-Switch) eingestellten ID verglichen. Nur (!) wenn 
diese übereinstimmt, wird der über die 4Bit-Adresse festgelegte Schalter 
auf den entsprechenden Wert gesetzt. Ich denke das sollte erklären wieso 
*259 mir für meine Zwecke als beste Lösung schien :)

Nichtsdesdotrotz habe ich auf der Platine nicht genug Platz um die für 
meine bisherige Lösung benötigten ICs unterzubringen und muss mir 
deshalb etwas "schlaueres" einfallen lassen. Falls jemand eine Idee dazu 
hat, nur raus damit. Anforderungen sind: 2 oder 3Bit ID zur 
Kennzeichnung des Boards, 13 Schalter auf einem Board von denen jeder 2 
Zustände kennt. Diese müssen über eine 3-Draht-Anbindung gesteuert 
werden können.

von Lanius (Gast)


Lesenswert?

@Siegfried

mit dem Acrobat Reader 5.0 kann ich die Datei problemlos darstellen, 
klappt sogar direct im Explorer.
Hat sonst noch jemand Probleme mit dem PDF?

@Lars

kannst du nicht mal nen Plan machen und uns erzählen wozu das ganze gut 
sein soll? Vieleicht fällt uns dann ja was schlaueres ein. So ist mir 
das zu verwirrend. Was meinst du mit "Schalter"?
Schalter lege ich per Hand um, die steuere ich nicht.
Wenn ich dir helfen soll muss ich genauer wissen was du hast und was du 
willst.

von Marcel (Gast)


Lesenswert?

Mal ne andere Frage: Wie kann ich INPUT Ports erweitern?

von ruepel (Gast)


Lesenswert?

Mit einem (oder mehreren) 74*165.
Der hat 8 Dateneingänge. Mit einem Latch-Impuls werde die Daten ins
Schieberegister gespeichert und können dann mit einer Clock Bit für Bit
hinausgeschoben werde. Ist quasi ein inverser 74*595 und braucht auch 3
Steuerleitungen (Latch, Clock, Dataout).

von Marcel (Gast)


Lesenswert?

Hmm. Habe jetzt schon anderweitig herausgelesen,
daß man dazu wohl den 74*166 verwenden kann. Bin
jetzt nicht der Hardwareexperte, vermute mal, daß
die 165 und 166 sehr ähnlich sind.

Haben ja auch fast die gleiche Nummer :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.