Forum: Mikrocontroller und Digitale Elektronik Erklärung, Videos, Anleitung zum Schieberegister 4021 (Parallel in - Serial Out)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas M. (sirius93)


Lesenswert?

Hallo Zusammen,

Ich habe jetzt schon viel gesucht, aber so richtig fündig geworden bin 
ich noch nicht. Ich bin auf der Suche nach einer guten Erklärung, sei es 
ein Video oder eine Anleitung, etc. für einen Schieberegister Parallel 
in - Serial Out, wie den cd4021b. Will das ganze für meinen Arduino 
verwenden und die Daten vom Arduino aus senden und dann seriell an was 
anderes weiterschicken.

Kann mir einer was empfehlen? Am besten natürlich auf Deutsch, Englisch 
geht auch, ist aber ab und zu nicht ganz so verständlich

Schönen Abend noch

von Karl M. (Gast)


Lesenswert?


von Peter D. (peda)


Lesenswert?


von google (Gast)


Lesenswert?

Warum schickst Du die Daten nicht gleich seriell aus dem Arduino raus?

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Warum wird eigentlich heute zu jedem Pippifax ein Erklärvideo erwartet? 
Was soll man dazu in einem Video zeigen, was das Datenblatt oder ein 
kurzer Text bzw. Codeauszug nicht darstellen kann?

Mit freundlichen Grüßen
Thorsten Ostermann

von Möwe (Gast)


Lesenswert?

Hi, ich kenne zwar deine Anwendung nicht, aber warum möchtest du die 
Daten erst parallel an die Pins anlegen und dann erst zu seriellen 
wandeln? Ist ein µC nicht gerade dazu prädesteniert die Daten direkt 
seriell zu senden und so Pins und Hardware zu sparen?

von Karl M. (Gast)


Lesenswert?

Vielleicht geht es ja um eine Hausaufgabe o.ä. Also ist der TE in der 
Lernphase und muss sich weiterbilden.

Viel Erfolg.

von Thomas M. (sirius93)


Lesenswert?

@google
Will das Timing nicht über den Arduino, bzw. selbst regeln. Tut jetzt 
nichts zur Sache, aber das will ich in diesem Fall nicht machen.

@Thorsten Ostermann
Weil da steht, dass es auch eine normale Erklärung tut. Warum meint in 
jedem Forum immer jeder, der mehr Ahnung hat, als einer der neu ist, ihn 
wegen irgendwas blöd anmachen zu müssen. Gib doch dein Expertenwissen 
woanders weiter, helfen willst du mir ja anscheinend nicht. Das 
Datenblatt erklärt es eben nicht, ich will wissen wie ich das Teil 
benutzen kann und kein Datenblatt sehen, wenn du einen Codeauszug hast, 
der mir das erklärt immer her damit. Ich hab diverse Seiten besucht und 
auch in meinem Buch geschaut, da wird immer nur ein Serial in - Parallel 
out erklärt und nein, ich verstehe es nicht, auch wenn ich das gelesen 
habe. Ich würde nicht fragen, hätte ich nicht schon knapp zwei Stunden 
gesucht und probiert. Tut mir leid, wenn diese Zeit dir zu viel ist, um 
es selbst rausgefunden zu haben, aber ich hab halt wohl nicht so viel 
Ahnung wie du, weswegen ich unter anderem hier nachfrage.

Gruß

von Thomas M. (sirius93)


Lesenswert?

Und nein, es geht nicht um irgendeine Hausaufgabe, ich arbeite nur an 
einem Projekt und versuche es nun auf diesem Weg. Wer mehr wissen will, 
kann gerne mein anderes Thema besuchen, ich wollte euch damit aber eben 
nicht nerven, sondern nur das wissen, damit ich selbst weiterprobieren 
kann.

von google (Gast)


Lesenswert?

Wo finde ich Dein anderes Thema?

von Thomas M. (sirius93)


Lesenswert?


von Peter D. (peda)


Lesenswert?

Thomas M. schrieb:
> Das
> Datenblatt erklärt es eben nicht

Was ist Dir an "Table 3. Function table" denn unklar?
Ich glaube nicht, daß es Videos zu Datenblättern gibt.
Gebräuchlicher ist das 74HC165, dafür findet man auch haufenweise 
Codebeispiele.

von Karl M. (Gast)


Lesenswert?

Hi Thomas,

ich habe keine Abneigung dir zu Helfen und gehe gerne so vor, Hilfe zur 
Selbsthilfe anzuleiten.
D.h. was ist im Datenblatt des 74HC165 unklar?

siehe Tabelle 3.
-- init
DL ist LOW
CP ist LOW
#CE ist HIGH
#PL ist HIGH
-- daten input
#PL auf LOW
Datenan D7-D0 legen
#PL auf HIGH
-- daten serial output
An Q7 und #Q7 liegt nun D7, bzw. #D7
#CE auf LOW

[ -- loop D6,..,D0
CP auf HIGH
pause - siehe Datenblatt
CP auf LOW
An Q7 und #Q7 liegt nun D6, bzw. #D6
] - end

von c-hater (Gast)


Lesenswert?

Thomas M. schrieb:

> Das
> Datenblatt erklärt es eben nicht, ich will wissen wie ich das Teil
> benutzen kann und kein Datenblatt sehen

Im DB befindet sich die Logiktabelle, die erklärt, wie man das Teil 
benutzen kann.

Dein Problem ist einfach nur, dass du unfähig bist, selbst so primitive 
Sachen wie diese Logiktabelle zu lesen und zu verstehen. Und dagegen 
hilft nur etwas, bei dem dir niemand wirklich helfen kann: LERNEN.

Da mussten alle anderen auch durch...

von Der Bub (Gast)


Lesenswert?

Ein Schieberegister ist doch etwas eher Kompliziertes. Dafuer sollte man 
einen 3 Tageskurs im Kongresshotel ansetzen. In lockeren 6 Halbtags 
Lektionen, mit 2 Stunden pro Pin. Ich wuerd diesen Kurs fuer 1850 Euro 
inklusive Mahlzeiten und 2 Uebernachtungen anbieten.

von MWS (Gast)


Lesenswert?

Thomas M. schrieb:
> Ich bin auf der Suche nach einer guten Erklärung, sei es
> ein Video oder eine Anleitung, etc.

Bitte sehr, bitte gleich:
www.youtube.com/watch?v=3IsJiR3mSa0

von Karl H. (kbuchegg) (Moderator)


Lesenswert?

Karl M. schrieb:
> Hi Thomas,
>
> ich habe keine Abneigung dir zu Helfen und gehe gerne so vor, Hilfe zur
> Selbsthilfe anzuleiten.
> D.h. was ist im Datenblatt des 74HC165 unklar?

Anschlussfrage:
Bzw. was ist denn generell an der Funktion eines Schieberegisters 
unklar?

Ein Schieberegister ist eine Kette, wie eine Kette Feuerwehrmänner, die 
Eimer zum jeweils nächsten weiterreichen. Die Eimer können gefüllt oder 
auch nicht gefüllt sein. Damit da Ordnung ins Chaos kommt, kann nicht 
einfach jeder seinen Eimer weiterreichen wie er lustig ist, sondern das 
geht auf Kommando. Also muss es ein Kommando geben, welches bedeutet: 
Uuuuuund jetzt, jeder gibt seinen Eimer zum nächsten weiter. Und genauso 
kann nicht jeder einfach wie er lustig ist, seinen Eimer ausleeren, 
sondern auch das geht auf Kommando: uuunnnd ausleeren.
That's it. Das ist ein seriell->parallel Schieberegister. An einem Ende 
steht einer und befüllt die Eimer und schickt sie in die Kette hinein. 
Mit jedem Kommando wandern die Eimer einen Mann weiter und wenn jeder 
seinen ihm zugedachten Eimer hat, wird ausgeleert.
In der umgekehrten Richtung parallel->seriell, stehen die 
Feuerwehrmänner vor jeweils einem Wasserhahn und auf Kommando lässt 
jeder seinen Eimer vollaufen oder auch nicht, wenn es dem Hahn eben kein 
Wasser kommt. Ist das erledigt, dann gibt wieder jeder seinen Eimer auf 
Kommando an den nächsten weiter und am Ende der Kette taucht 
nacheinander ein gefüllter oder ein leerer Eimer auf. Aus der 
Reihenfolge gefüllt/nicht gefüllt lässt sich ablesen, aus welchem 
Wasserhahn Wasser gekommen ist und aus welchem nicht.
That's it. Das ist ein parallel->seriall Schieberegister. Die Eimer 
werden parallel (= alle gleichzeitig) gefüllt und an einem Ende tauchen 
sie seriell (= einer nach dem anderen, im Gänsemarsch) wieder auf.

Anzumerken ist noch, dass im Falle von elektronischen Schieberegistern 
die Kommandos in Form von Pulsen kommen. Bei den Feuerwehrmännern könnte 
man sagen, da stehen halt 2 Typen rum, die jeweils eine Taschenlampe ein 
bzw. ausschalten und beispielsweise das Einschalten der Taschenlampe 
signalisiert der ganzen Kette, den Eimer weiterzureichen. Es könnte auch 
das Ausschalten sein, das ist dann einfach nur Vereinbarungssache.

Wenn du das bis hier her verstanden hast, dann hast du auch 
Schieberegister in ihren Grundprinzipien verstanden. Genau das ist es. 
Mehr gibt es zu Schieberegistern im Prinzip nicht zu sagen. Alles 
weitere sind technische Details, wie zb das es am IC einen Eingang gibt, 
mit dem man alle Ausgänge gemeinsam abschalten kann. Aber in der 
Kernfunktion ist mit der Feuerwehrkette alles gesagt, was man über 
Schieberegister wissen muss. Und das hat keine 2 Stunden gedauert.

Und wenn du jetzt sagst "Was, das ist alles? So simpel ist das?", dann 
kannst du vielleicht verstehen, warum hier einige verwundert den Kopf 
schütteln, warum man für so etwas Triviales ein Video zur Erklärung 
benötigt. Überhaupt nachdem derjenige schon Studien angestellt hat. Denn 
die meisten Dinge in der Technik sind absolut trivial und sind sehr oft 
an Vorgängen im täglichen Leben angelehnt. Auch Techniker und Ingenieure 
sind keine Wunderwuzzi, sondern sehen sich oft einfach nur an, wie wir 
im täglichen Leben ähnliche Problemstellungen meistern und fassen das 
dann in eine formale und technische Implementierung. Aber die Prinzipien 
sind oft einfach nur dem täglichen Leben abgeschaut und da wie dort 
identisch. Wer mit offenen Augen durchs Leben geht und sich überlegt wie 
Dinge wohl funktionieren oder organisiert werden, wird vielerlei 
Übereinstimmungen finden. Vor allen Dingen dann, wenn es um Erklärungen 
für technisches Urgestein geht. Einen modernen Grafikprozessor wird man 
so nicht erklären können (auch wenn sich in Teilbereichen so manches 
wiederfindet), aber das meiste der Grundschaltungen findet sich an 
vielen anderen Stellen in einer anderen Implementierung aber identischem 
Prinzip wieder.

: Bearbeitet durch Moderator
von Thomas M. (sirius93)


Lesenswert?

Super, mit dem Video und der Erklärung von Karl Heinz hat es dann 
endlich geklappt. Habe gestern auch noch diesen Kurs gemacht, die bieten 
auch Abendkurse für 599€ an. Der hat mir gestern dann doch noch alles 
erklärt.

Jetzt mal im ernst. Hätte ich es zum Laufen gebracht, hätte ich nicht 
gefragt, ich weiß, dass ich hier, egal wie wenig Ahnung ich habe, selbst 
versuchen sollte weiter zu kommen. Ich weiß wie ein Serial in-Parallel 
Out Register funktioniert und kann es auch benutzen. Ich hab natürlich 
nicht aufgepasst und hätte sowieso ein Parallel in-Serial Out gebraucht, 
nur leider funktioniert es bei mir nicht, deswegen dachte ich mir, frage 
ich mal nach, vll hilft mir ja jemand und ich kann das abkürzen. Wenn 
nicht, schau ich halt weiter, wird irgendwann schon in meinen Schädel 
reingehen. Und nein, es ist eben nicht immer alles Trivial, klar hab ich 
verstanden, was der Schieberegister tut und wofür man ihn einsetzen 
kann, weswegen ich ihn ja benutzen will. Die Tabelle check ich nicht, 
muss ich mich halt einlesen, deswegen kam gestern auch keine Antwort 
mehr. Wie lang ich dafür brauche, ist meine Sache, helfen tut sie mir 
bis jetzt nicht. Die Feuerwehrmanngeschichte ist ebenfalls keine Hilfe, 
ich hätte mir wohl kaum ein Schieberegister zugelegt, wenn ich nicht 
wüsste, was es tut. Es gibt immer noch einen Unterschied zwischen der 
Funktionsweise, der Funktion, und einer Anwendung, welche die Funktion 
verdeutlicht. Ich weiß ja nicht, wie ihr euer Wissen angesammelt habt, 
auf welchem Weg und von welcher Quelle. Aber wenn man nach zwei Monaten 
(mit zwei Monaten Pause) die Funktionsweise im Selbststudium, mithilfe 
2er Bücher für den Arduino, die es nicht für angemessen halten, mir die 
Funktionsweise beider Schieberegister zu erklären, dann ist es 
vielleicht verständlich, dass ich da einfach nicht weiter weiß, egal wie 
dumm diese Frage für manche von euch klingen mag.
Bevor ich weiter eure und meine Zeit verschwende, setze ich mich selber 
wieder ran und quäle euch wieder, wenn ich fragen hab, die eurer 
hoffentlich würdig sind. Falls ihr vergessen habt, dass es keinen Zwang 
gibt, auf jedes Thema zu antworten, möchte ich euch hiermit gerne darauf 
hinweisen. Vielleicht wäre dadurch der Prozentsatz an hilfreicher 
Antworten deutlich höher.

Schönen Tag noch

: Bearbeitet durch User
von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Lesenswert?

Thomas M. schrieb:
> Die Tabelle check ich nicht,

Was ist daran unklar? Mit so etwas umzugehen ist elementares 
Grundwissen, das ist eine Fähigkeit, die man sich unbedingt aneignen 
muss.

von Karl H. (kbuchegg) (Moderator)


Lesenswert?

Thomas M. schrieb:

> Es gibt immer noch einen Unterschied zwischen der
> Funktionsweise, der Funktion, und einer Anwendung, welche die Funktion
> verdeutlicht.

Dann ist dir nicht zu helfen.

> Ich weiß ja nicht, wie ihr euer Wissen angesammelt habt,
> auf welchem Weg und von welcher Quelle.

Bei mir: Indem ich so einen Baustein auf ein STeckbrett gesteckt habe, 
an den Eingängen entprellte Taster gelegt habe, an die Ausgänge ein paar 
LED und einfach 15 Minuten probiert habe. Dasselbe bei der Ansteuerung 
durch einen µC. Da im Datenblatt nichts steht, dass man nicht zu langsam 
sein darf, kann man ein Schieberegister an einen µC hängen und anstatt 
'full Speed' mit ein paar 100 kHz kann man den auch mit reichlich 
Wartezeiten im Programm ansteuern, sodass man mit ein paar LED an den 
Ein/Ausgängen nachvollziehen kann, in welcher Reihenfolge welcher Pin 
von 0 auf 1 bzw umgekehrt geht. Und dann probiert man halt und überlegt 
sich, was wohl die logisch vernünftigste Reihenfolge sein wird. Denn wie 
gesagt: Bei vielen Dingen ergibt sich die Reihenfolge ganz von alleine, 
wenn man  nur überlegt, dass zuerst der gewünschte Wert da sein muss und 
erst dann das Kommando kommen kann, mit diesem Wert etwas zu machen. 
Eine Binsenweisheit.

: Bearbeitet durch Moderator
von Max S. (maximus-minimus)


Lesenswert?

wie immer nur hier...einer versteht etwas nicht, WESHALB auch 
immer..vielleicht weil er einfach mit einem Video z.B. Dinge besser 
versteht, manche lernen durch anfassen besser..andere durch ein Bucht..
Jeder der in der Oberstufe..ne, Mittelstufe war hatte die 
unterschiedlichen lerntypen..mehr sag ich dazu nicht, sonst heißt es 
wieder ich würde Beleigungen schreiben haha

Moderatoren sollten sich Kommentare jedweder Art sowieso sparen, das ist 
nicht die Aufgabe, die Fähigkeiten des Threatstarters in Frage zu 
stellen
Solche Aussagen von einem Moderator "Dann ist dir nicht zu helfen."
Sind ein ein Unding

: Bearbeitet durch User
von Thomas E. (picalic)


Lesenswert?

Thomas M. schrieb:
> leider funktioniert es bei mir nicht

um eine effektive Hilfe zu ermöglichen, hättest Du dann vielleicht 
besser einfach mal konkret beschreiben sollen, was Du im einzelnen 
gemacht hast und was genau nicht geht. Wenn Du im Prinzip schon weisst, 
wie das Schieberegister funktioniert, aber es in Deinem Fall eben nicht 
tut, kann eine allgemeine Frage "wie funktioniert das mit dem 
Schieberegister" auch nicht zu vernünftigen Antworten führen.

: Bearbeitet durch User
von Paul B. (paul_baumann)


Angehängte Dateien:

Lesenswert?

Hier ist ein Programmentwurf für eine Bedienoberfläche, wie mit rüden 
Antworten umgegangen werden kann.

MfG Paul

von Peter D. (peda)


Lesenswert?

Thomas M. schrieb:
> nur leider funktioniert es bei mir nicht

Das Problem für einen Außenstehenden ist aber, zu erkennen, was bei Dir 
nicht funktioniert.
Da sich niemand bei Dir an den PC setzen kann, hilft nur, daß Du das 
Problem so ausführlich wie möglich beschreibst. Erst dann kann man auch 
helfen.

Vielleicht ist Dein Problem aber auch, das Signalspiel in Code 
umzusetzen. Der falsche Ansatz ist dabei, einfach drauflos zu 
programmieren. Mach Dir doch erstmal einen Programmablaufplan.

Du kannst jederzeit Code, den Du kommentiert hast oder Handskizzen als 
Anhang senden, damit wir uns das anschauen können.
Als Anhang ist immer deutlich besser, als ins Posting einzufügen.

von Karl H. (kbuchegg) (Moderator)


Lesenswert?

Thomas E. schrieb:
> Thomas M. schrieb:
>> leider funktioniert es bei mir nicht
>
> um eine effektive Hilfe zu ermöglichen, hättest Du dann vielleicht
> besser einfach mal konkret beschreiben sollen, was Du im einzelnen
> gemacht hast und was genau nicht geht. Wenn Du im Prinzip schon weisst,
> wie das Schieberegister funktioniert, aber es in Deinem Fall eben nicht
> tut, kann eine allgemeine Frage "wie funktioniert das mit dem
> Schieberegister" auch nicht zu vernünftigen Antworten führen.

Ganz genau so ist es.

von Thomas M. (sirius93)


Lesenswert?

Thomas E. schrieb:
> Thomas M. schrieb:
>> leider funktioniert es bei mir nicht
>
> um eine effektive Hilfe zu ermöglichen, hättest Du dann vielleicht
> besser einfach mal konkret beschreiben sollen, was Du im einzelnen
> gemacht hast und was genau nicht geht. Wenn Du im Prinzip schon weisst,
> wie das Schieberegister funktioniert, aber es in Deinem Fall eben nicht
> tut, kann eine allgemeine Frage "wie funktioniert das mit dem
> Schieberegister" auch nicht zu vernünftigen Antworten führen.




Thomas M. schrieb:
>> nur leider funktioniert es bei mir nicht

>Das Problem für einen Außenstehenden ist aber, zu erkennen, was bei Dir  >nicht 
funktioniert.
>Da sich niemand bei Dir an den PC setzen kann, hilft nur, daß Du das
>Problem so ausführlich wie möglich beschreibst. Erst dann kann man auch
>helfen.

>Vielleicht ist Dein Problem aber auch, das Signalspiel in Code
>umzusetzen. Der falsche Ansatz ist dabei, einfach drauflos zu
>programmieren. Mach Dir doch erstmal einen Programmablaufplan.

>Du kannst jederzeit Code, den Du kommentiert hast oder Handskizzen als >Anhang 
senden, damit wir uns das anschauen können.
>Als Anhang ist immer deutlich besser, als ins Posting einzufügen.



Das wollte ich gezielt vermeiden, da das Projekt an welchem ich arbeite 
nicht gerade wenig ist und ich das euch eigentlich ersparen wollte. Oben 
hab ich das Thema verlinkt, daran arbeite ich, versuche einen der 
Vorschläge umzusetzen, eben mit einem Schieberegister. Wer sich das 
durchlesen will, kann das gerne tun.

Was ich eigentlich versuchen will ist folgendes. Ich will die Eingänge 
des Schieberegisters über den Arduino ansteuern und die Clock und den 
Latch woanders her bekommen. Um zu verstehen wie der Schieberegister 
funktioniert meinetwegen können clock und latch auch vom Arduino 
ausgehen. Was ich ansteuern will um zu verstehen wie es funktioniert 
weiß ich nicht genau. Ich nehme mal an ein Pieper oder eine LED die dann 
eben so blinkt, wie ich das parallel eingegeben habe, ist fürs 
Verständnis ganz gut.

Also hab ich 10 Output vom Arduino, 8 Datenpins, 1 clock und 1 latch. 
Über den Seriellen Ausgang, bei meinem 4021B ist das Q8 möchte ich dann 
eben eine LED oder sonst was anschließen um zu schauen ob es 
funktioniert.

Mein eigentliches Problem ist: Wie schaut bei sowas der Code aus, wie 
steuer ich den latch und die clock, was genau kommt in welcher 
Reihenfolge.

Klar, will ich nicht alles wissen, ein kleiner Hinweis was ich machen 
könnte, ein kleines Codebeispiel, für euch sicher in wenigen Minuten 
kein Problem, würde mir wohl sehr weiterhelfen.

Gruß

von Karl H. (kbuchegg) (Moderator)


Lesenswert?

Thomas M. schrieb:

>
> Also hab ich 10 Output vom Arduino, 8 Datenpins, 1 clock und 1 latch.
> Über den Seriellen Ausgang, bei meinem 4021B


da das ein parallel->seriell ist:
1
  8 Datenausgänge auf die richtigen Pegel stellen
2
3
  "Parallel Load" vom IC auf High
4
  "Parallel Load" vom IC wieder auf Low
5
6
                  zu diesem Zeitpunkt hat der IC die 8 Datenbits
7
                  übernommen
8
9
                  Der Ausgang Q7 nimmt dann schon den Pegel vom höchsten
10
                  geladenen Datenbit an.
11
12
13
  "Clock" vom IC auf High
14
                  zu diesem Zeitpunkt erscheint das nächste Datenbit
15
                  am Ausgang
16
  "Clock" vom IC wieder Low
17
18
19
  "Clock" wieder auf High
20
                  das nächste Datenbit kommt raus
21
  "Clock" wieder auf Low
22
23
24
  "CLock" auf High
25
                 und das nächste purzelt raus
26
  "Clock" auf Low
27
28
29
  etc. etc.

: Bearbeitet durch Moderator
von Thomas M. (sirius93)


Lesenswert?

Karl H. schrieb:
> Thomas M. schrieb:
>
>>
>> Also hab ich 10 Output vom Arduino, 8 Datenpins, 1 clock und 1 latch.
>> Über den Seriellen Ausgang, bei meinem 4021B
>
>
> da das ein parallel->seriell ist:
>
>
1
> 
2
>   8 Datenausgänge auf die richtigen Pegel stellen
3
> 
4
>   "Parallel Load" vom IC auf High
5
>   "Parallel Load" vom IC wieder auf Low
6
> 
7
>                   zu diesem Zeitpunkt hat der IC die 8 Datenbits
8
>                   übernommen
9
> 
10
>                   Der Ausgang Q7 nimmt dann schon den Pegel vom höchsten
11
>                   geladenen Datenbit an.
12
> 
13
> 
14
>   "Clock" vom IC auf High
15
>                   zu diesem Zeitpunkt erscheint das nächste Datenbit
16
>                   am Ausgang
17
>   "Clock" vom IC wieder Low
18
> 
19
> 
20
>   "Clock" wieder auf High
21
>                   das nächste Datenbit kommt raus
22
>   "Clock" wieder auf Low
23
> 
24
> 
25
>   "CLock" auf High
26
>                  und das nächste purzelt raus
27
>   "Clock" auf Low
28
> 
29
> 
30
>   etc. etc.
31
>
1
#define Data_pin1   0
2
#define Data_pin2   1
3
#define Data_pin3   2
4
#define Data_pin4   3
5
#define Data_pin5   4
6
#define Data_pin6   5
7
#define Data_pin7   6
8
#define Data_pin8   7
9
10
#define Latch_Pin   11
11
#define Clock_Pin   12
12
#define Data_out    13
13
14
15
void setup() {
16
17
  pinMode(Data_pin1,OUTPUT);
18
  pinMode(Data_pin2,OUTPUT);
19
  pinMode(Data_pin3,OUTPUT);
20
  pinMode(Data_pin4,OUTPUT);
21
  pinMode(Data_pin5,OUTPUT);
22
  pinMode(Data_pin6,OUTPUT);
23
  pinMode(Data_pin7,OUTPUT);
24
  pinMode(Data_pin8,OUTPUT);
25
  pinMode(Latch_Pin,OUTPUT);
26
  pinMode(Clock_Pin,OUTPUT);
27
}
28
29
30
void loop() {
31
  digitalWrite(Data_pin1,HIGH);
32
  digitalWrite(Data_pin2,LOW);
33
  digitalWrite(Data_pin3,HIGH);
34
  digitalWrite(Data_pin4,LOW);
35
  digitalWrite(Data_pin5,HIGH);
36
  digitalWrite(Data_pin6,LOW);
37
  digitalWrite(Data_pin7,HIGH);
38
  digitalWrite(Data_pin8,LOW);
39
40
  digitalWrite(Latch_Pin,HIGH);
41
  digitalWrite(Latch_Pin,LOW);
42
  for(int i=0;i<8;i++){
43
    digitalWrite(12,HIGH);   
44
    digitalWrite(12,LOW);
45
    delay(500);
46
  }
47
48
}

Vielen Dank, das hat mir geholfen. Nur noch zwei Fragen: Gibt es 
irgendwelche Mindestlängen der Latch und Clock-Impulse?
Verwende ich am Data_Pin8 einen HIGH-Zustand, wird dieser nicht an der 
LED wiedergegeben.

von c-hater (Gast)


Lesenswert?

Max S. schrieb:

> Solche Aussagen von einem Moderator "Dann ist dir nicht zu helfen."
> Sind ein ein Unding

Tja, es gibt wohl immer wieder Leute, denen die ungeschminkte 
Darstellung der objektiven Wahrheit als "Unding" erscheint...

Tatsache ist aber nunmal, dass das verstehende Lesen von Logiktabellen 
unverzichtbare Grundlage zum souveränen Einsatz von Logik-ICs ist. Da 
kannst du dich auf den Kopf stellen und mit dem Arsch Fliegen fangen, 
das bleibt auch dann noch so.

Und wer das nicht kann, muss es halt lernen, genau so, wie alle es 
lernen mussten, die es schon können.

Natürlich kann es passieren, dass man bestimmte Details der 
Logiktabellen (insbesondere der von getakteten ICs) nicht auf Anhieb 
versteht, das ist doch klar. Dann kann man nach eben diesen Details 
fragen.

Das erzeugt dann auch ein völlig anderes Bild der Antworten, denn es 
zeigt gleich zwei Sachen: der Fragende ist gewillt zu lernen und er müht 
sich auch aktiv, das zu tun.

Wenn allerdings auch mehrere deutliche Hinweise in Richtung Logiktabelle 
schnodderig ignoriert werden und weiter nur nach C&P-Wichsvorlagen oder 
YT-Coachpotato-Krams gehechelt wird, dann muss sich der Delinquent nicht 
wundern, wenn er für faul und merkbefreit gehalten und dann eben auch 
entsprechend behandelt wird.

von Karl H. (kbuchegg) (Moderator)


Lesenswert?

Thomas M. schrieb:

> Vielen Dank, das hat mir geholfen. Nur noch zwei Fragen: Gibt es
> irgendwelche Mindestlängen der Latch und Clock-Impulse?
> Verwende ich am Data_Pin8 einen HIGH-Zustand, wird dieser nicht an der
> LED wiedergegeben.

Der müsste bereits nach dem ersten Latch High-Low am Ausgang Q7 
anliegen.

D.h. laut diesem Datenblatt
http://www.nxp.com/documents/data_sheet/HEF4021B.pdf

d.h. ich würde mir halt mal nach dem Latch ein Delay einbauen und 
technisch gesehen brauchst du dann auch nur 7 Clock Pulse. Weil das 
erste Bit ist ja sofort nach dem Latchenn da, und dann bleiben noch 7 
die rausgetaktet werden sollen
1
  digitalWrite(Latch_Pin,HIGH);
2
  digitalWrite(Latch_Pin,LOW);
3
4
  delay(500);
5
6
  for(int i=0;i<7;i++){
7
    digitalWrite(12,HIGH);   
8
    digitalWrite(12,LOW);
9
    delay(500);
10
  }

: Bearbeitet durch Moderator
von Karl H. (kbuchegg) (Moderator)


Lesenswert?

Thomas M. schrieb:

> Vielen Dank, das hat mir geholfen. Nur noch zwei Fragen: Gibt es
> irgendwelche Mindestlängen der Latch und Clock-Impulse?

Ja gibt es. Steht alles in dem verdammten Datenblatt zu dem genauen 
IC-Typ den du hast
http://www.redrok.com/CMOS_CD4021BC_8-StageStaticShiftRegister_Fairchild.pdf

(und nein, die Mindestlängen wirst du mit deinem mittels digitalWrite 
schaumgebremsten AVR-Arduino bei weitem nicht erreichen. Dazu ist er 
nicht schnell genug).

: Bearbeitet durch Moderator
von Thomas M. (sirius93)


Lesenswert?

Ok, danke hierfür, jetzt klappt das.
Das Timing soll der Arduino später nichtmehr übernehmen, sondern die 
Clock und der Latch kommen woanders her und haben eine Länge von 12µs 
bzw. 6µs.
Aber ich werd das jetzt einfach ausprobieren...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.