Hm dann ist das IC doch nichts für mich brauch was wie das ic nur dass auch mehrere Ports aktivierbar sein müssen.
Druckbare Version
Hm dann ist das IC doch nichts für mich brauch was wie das ic nur dass auch mehrere Ports aktivierbar sein müssen.
Nochmal Schieberegister: ^^
Also das Schieberegister funktioniert so ? (Habe ich das richtig verstanden ?
1. Noch kein Takt-Signal erfolgt wenn Dateneingang auf 1 gesetzt wird, ist auch auf Pin 1 des Registers dann immer Strom, ich Schalte durch die Registerstellen mit 101010101 usw immer bei 1 Schalte ich 1 weiter und setze das Register neu. Der Wert des Registers in das ich schreibe wird in das nächste übertragen ? (ist glaub ich auch nicht so gut, wenn die Werte weitergeschoben werden.)
Fast richtig.Zitat:
1. Noch kein Takt-Signal erfolgt wenn Dateneingang auf 1 gesetzt wird, ist auch auf Pin 1 des Registers dann immer Strom, ich Schalte durch die Registerstellen mit 101010101 usw immer bei 1 Schalte ich 1 weiter und setze das Register neu. Der Wert des Registers in das ich schreibe wird in das nächste übertragen ? (ist glaub ich auch nicht so gut, wenn die Werte weitergeschoben werden.)
Du legst also eine 1 auf den Eingang, an den Ausgängen passiert noch nichts.
Jetzt gibst Du einen Taktimpuls auf den Takteingang des Schieberegisters.
Jetzt erscheint die 1 am Ausgang 1.
Nun legst Du beispielsweise eine 0 an den Eingang.
Da passiert noch nichts.
Jetzt gibst Du wieder einen Taktimpuls auf die Taktleitung.
Die 1 von Ausgang 1 wird auf Ausgang 2 weitergeschoben und die 0 vom Eingang wird auf den Ausgang 1 erscheinen.
So geht das weiter bist alle z.B. 8 Datenbits eingelesen sind.
Wie Du richtig erkannt hast werden die einzelnen Bits vom niederwertigsten Ausgang 1 bis zum höherwertigsten Ausgang 8 durchgeschoben - drum heisst das Ganze ja auch Schieberegister. Da das erscheinen der Bitinformationen auf den einzelnen Ausgängen ja sehr unschön ist hat man das Latch erfunden.
Auch hierbei werden die Bits durch das Schieberegister durchgeschoben, aber die jeweiligen Bits werden erst Dann auf die Ausgänge durchgeschaltet, wenn das Latch aktiviert wird (LE).
Bis zu diesem Zeitpunkt bleiben die Ausgänge der vorherigen Einstellung aktiv(Also die vom letzten Latch Enable). Also eigentlich genau das was Du brauchst.
Bei einer Relaisschaltung wäre zwar ein Latch nicht unbedingt nötig, bis das Relais anspricht oder abfällt ist die 1 bzw. 0 schon lange auf den nächsten Port weitergewandert. Du musst dann allerdings Programmmäßig dafür sorgen, das die komplette Information zügig in das Schieberegister eingelesen wird.
In einer Halbleiteranschlusstabelle sollte sich mit Sicherheit ein passendes Schieberegister finden lassen. Eventuell kenn ja auch jemand aus dem Forum hier was passendes.
Danke für die Antwort ich gucke mir heute abend mal das Datenblatt an.
Data inputs: (Wie kann ich die am AT Mega anhängen einfach Dsb an + und Dsa an PC0 ?)
Dsa
Dsb
Q0 - Q7 Outputs and die ich meine BC548C (NPN Transistor) mit der Basis dranklemmen kann (natürlich mit Vorwiderstand).
GND = -
VCC = +5V
MR auf +5V ??? (evtl an den AT Mega einen pin gönnen)
CP müsste der Tackt sein
------------------------------------------------------------------------------------------------------
Kann mir jemand villeicht das 74HCT164 erklären, ganz raff ich des net vom Datenblatt
GND und VCC sind klar und Q0 -Q1 auch ziemlich.
Das es immer intern Weitergereicht wird habe ich auch verstanden
und dass ein latch drin ist, damit ich irgendwie zuerst alle belegen kann und dann aktiv schalten kann.
Was ich noch nicht verstehe wie bekomm ich die Daten in das IC? also was muss ich wie an die Pins Dsa Dsb CP MR anlegen um das Register mit
10110010 z.b zu füllen und scharf zu schalten
und wie muss es vom AT Mega Programmiert werden
also ich meine damit Psydocode
PC0 ein
PC1 Wert ein oder aus setzen
PC0 aus oder so in der Richtung
Danke schon jetzt für alle noch folgenden Bemühungen und schon erfolgenden Bemühungen.
Moin!
Praktischerweise sind 8Bit genau ein Byte, also irgendwas zwischen Dezimal 0-255, Hexadezimal 0x00-0xff, bzw. Binär 0b00000000 - 0b11111111. Du machst also folgendes für z.B. Dein 10110010 :
Variable = 0b10110100
dann 8 mal, z.B. for-schleife oder so:
Und-Verknüpfung mit 1 -> 0b00000001
wenn 1: Datenpin auf High
sonst: Datenpin auf Low
dann CP auf high und wieder auf low
Variable nach rechts schieben(shiften), im Zweifel durch 2 teilen, bewirkt binär genau das
schleife von vorn
das ergibt dann folgendes:
10110010 & 1: D=0
01011001 & 1: D=1
00101100 & 1: D=0
00010110 & 1: D=0
00001011 & 1: D=1
00000101 & 1: D=1
00000010 & 1: D=0
00000001 & 1: D=1
D ist z.B. Dsa, Dsb muß High sein, also an 5V, oder Dsa und Dsb müßen zusammengeschaltet werden.
Die Daten, Takt- und evtl. Latch Pins können direkt an Portpins vom AVR gehängt werden.
das 74* 164 hat kein Latch, das gibt die Pegel sofort aus, der MR-Anschluß setzt alle Ausgänge gleichzeitig auf 0 (Master Reset), das gleiche erreicht man (nur ein klein wenig langsamer), wenn man einfach eine 0 in das Register schiebt, man spart sich aber so den zusätzichen Pin am Controller, MR muß dann an 5V gelegt werden.
Ein Schieberegister mit Latch wäre z.B. das 74LS595.
Schön beschrieben und mit Bildchen steht das übrigens alles https://www.roboternetz.de/wissen/in...xpander_am_AVR
MfG Volker
Danke, die Seite und das Forum hat mir sehr geholfen, hab gleich mal über einen Kumpel der bei Reichelt bestellt, das 74HC 595 mitbestellt zum experimentieren, dann nehm ich eine IC Fassung ein paar kabel und teste einfach mal drauf los. Muss ich beim Takt geben entprellen ? (wenn ich das von Hand mache zum test )
Moin!
Jupp, auf alle Fälle!!!! So ein Chip kann ein paar MHz, wenn Du da einfach einen Taster anschließt, schießen Deine Bits hinten gleich wieder raus!!
;-)
Nimm doch lieber gleich Deinen Mega32, der schaltet wenigstens gleich sauber, und langsam machen kann man den auch...
Viel Erfolg!
MfG Volker
Danke für die ganzen Posts
Ich werde wieder von mir hören lassen, wenn ich das IC habe.
Danke noch mal an alle.
Hier kommt eine Schaltung mit Schieberegister und Treiber.
Die 'linken' IC's zum Einlesen von Daten kannst Du weg lassen.
Dann brauchst Du 3 Signale:
SCL = Seriell Clock ... Takt
SDO = Seriell Data Out ... Daten
PS = Parallel Set ... Daten-Übernahme und Ausgabe
Die Funktion eines Schieberegisters ist ja schon ausreichend beschrieben worden.