Forum: Mikrocontroller und Digitale Elektronik Schieberegister Frage(n)


von M. M. (mrmcchicken)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich wollte mich mal eine wenig mit Schieberegistern (74hc595) 
auseinander setzen.
Für den Arduino gibt es da ja schon vorgefertigte librarys für.
Da ich aber gerne einen Attiny programmieren wollte muss ich ohne 
auskommen.
Ich habe mir bereits den Artikel durchgelesen:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

Jetzt würde ich gerne so ein Gerät beschalten.
Allerdings soll das ganze in sehr langsam laufen. Das heißt ich will mit 
einem Taster die Bits setzen und mit einen anderen diese schließlich 
ausgeben lassen.
Am SCK sitzt ein Arduino der alle halbe Sekunde an und aus geht.
Folgende Schaltung habe ich jezt getestet: (siehe Anhang)

Das oben beschriebene klappt jetzt nicht so ganz, wäre auch zu schön ;).
Wie kann ich das realisieren?

von Georg G. (df2au)


Lesenswert?

Offene Eingänge sind bei LS-TTL logisch High. Mit dem Schalter schaltest 
du sie dann auf VCC, also auch High. Deine Schalter sind wirkungslos. 
Den Sinn für den Widerstand erschließt sich mir auch nicht.

von Stephan H. (stephan-)


Lesenswert?

konrad M. schrieb:

> Allerdings soll das ganze in sehr langsam laufen. Das heißt ich will mit
> einem Taster die Bits setzen und mit einen anderen diese schließlich
> ausgeben lassen.


Wie willsz Du denn die Daten eintakten ?
Das geht so nicht. Dieses Register bekommt einen seriellem datenstrom 
und gibt den parallel aus. Anders herum kanst Du mit einem Parallel zu 
Seriell Register die Daten mit Tastern/Schaltern anlegen aber nur 
seriell ausgeben.
Was Du willst, die Daten parrallel einlesen und parallel ausgeben.
Dazu musst Du ein Register von Parallel zu serielll haben an welchem die 
Schalter sind, das auslesen und alles wieder serielle an ein Ser/par. 
Register ausgeben.

Das macht so relative wenig Sinn.
Du brauchst am Arudino SPI als Eingang und als Ausgang.
Also ein 165 und ein 595 oder ähnliches.

Was willst Du genau machen ?

von M. M. (mrmcchicken)


Lesenswert?

Den Schiebetakt erzeugt der Arduino.
Das Signal ,möchte ich von Hand über den Taster eingeben und über den 
zweiten in die Ausgangsregister schieben.
Der eine Widerstand ist als Pulldown Widerstand gedacht, damit ich über 
den Taster auf HIGH schalten kann. Der Widerstand beträgt 560R.

Oder ist mein Ansatz ganz falsch?

Ich möchte damit mir die Funktionsweise ein wenig verinnerlichen.

MfG

von Georg G. (df2au)


Lesenswert?

Die Ausgänge sind immer hochohmig, da /G nicht beschaltet ist.

Der Pulldown ist wirkungslos, er liegt zwischen VCC und GND.

von Georg G. (df2au)


Lesenswert?

LS-TTL schaltet man üblicherweise nicht nach High sondern nach GND.

von M. M. (mrmcchicken)


Lesenswert?

Stimmt, das mit dem Pulldown ist jetzt recht ungeschickt.
Soll ich den Widerstand jetzt als Pullup oder -down benutzen?
Und muss /G auf 5V oder GND?

von Georg G. (df2au)


Lesenswert?

konrad M. schrieb:
> Und muss /G auf 5V oder GND?

RTFM!

von M. M. (mrmcchicken)


Lesenswert?

Also das bezog sich eher darauf ob ich das jetzt mit einem Pullup 
Widerstand regeln muss, oder ob ich den Arduino anschließen kann und 
einfach die Bits eingeben wenn der auf LOW geschaltet ist.

von Stephan H. (stephan-)


Lesenswert?

konrad M. schrieb:
> Den Schiebetakt erzeugt der Arduino.
> Das Signal ,möchte ich von Hand über den Taster eingeben und über den
> zweiten in die Ausgangsregister schieben.
> Der eine Widerstand ist als Pulldown Widerstand gedacht, damit ich über
> den Taster auf HIGH schalten kann. Der Widerstand beträgt 560R.
>
> Oder ist mein Ansatz ganz falsch?
>
> Ich möchte damit mir die Funktionsweise ein wenig verinnerlichen.
>
> MfG

und woher weis Deine MCU das Du Deine Daten angelegt hast ?
Richtig, wenn Du auf Ausgabe drückst. Dann haben deine Taster aber schon 
lange los gelassen. :-( Weil es eben Taster sind.
WENN DAS SO GEHEN SOLL, DANN BITTE SO:

Die Information mit Schaltern anlegen, mit einem Taster die 
Datenübernahme betsätigen und mit einem weiteren (oder dem vorherigen) 
die Datenausgabe aktivieren.

zum Mitschreiben:
Die Daten müssen stabil anliegen
Dann die Daten einlesen
Jetzt die Daten ausgeben.

Du hast grunsätzliche Verständnisprobleme zur Thematik. Da sind die Pull 
Up oder Down erstmal völlig wurscht.

1. Frage: was macht ein Par. zu Ser. Register ?
2. Frage: was macht ein Ser. zu Par. Reister ?
3. Frage: wie erkennt mein Controller, das ich eine Taste gedrückt habe 
?

Wen Dir das klar ist, dann reden wir über die Pull UP´s

von M. M. (mrmcchicken)


Lesenswert?

Ich bin jetzt ein wenig verwirrt, aber ich hoffe ich weiß worum es geht.
Also so wie ich es verstanden habe ist es Schwachsinn die Bits mit einem 
Taster versuchen einzeln zu setzen?

zu deinen Fragen:
1. Par. zu Ser. erzeugt aus einem Parallelen Signal über mehrere 
Leitungen ein Serielles Signal
2. Genau anders rum (wie das 74hc595). Aus einem Binären Signal gibt es 
über 8 Pins entweder Einsen oder Nullen aus (HIGH/LOW).
3.Entweder mit einem Pullup oder Pulldown Widerstand (zwischen Eingang 
und Vcc oder eingang und GND)

von Stephan H. (stephan-)


Lesenswert?

4. setzen.

Dein Controller erkennt einen gesetzten Taster indem er das Portpin 
abfragt.
Ob das dann High oder Low ist, hängt davon ab, wie Du Deine Schaltung 
entworfen hast. Ein 8051 hat zB. im Reset Zustand H aktive Pins. Was 
u.U. zu Problemen beim Einschalten führen kann, weil Baugruppen aktiv 
werden, die gar nicht aktiv werden sollen. Daher wird dort gern Low 
gesteuert. Also muss da ein Pull down rein.

Du kannst Bits einzel setzen. Aber nur eingangsseitig. Und alle Bits 
müssen gesetzt sein, wenn Du Deiner MCU sagst, "jetzte lese alle Bits 
ein" !

von EGS_TI (Gast)


Lesenswert?


von Stephan H. (stephan-)


Lesenswert?

hier fehlen Grundlagen. Ich glaube nicht, das das Video hilft.
Danke

von EGS_TI (Gast)


Lesenswert?

Ok. Ist aber denke ich trotzdem ganz nett anzuschauen und eventuell 
dennoch hilfreich für ihn.

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.