Forum: Mikrocontroller und Digitale Elektronik Schieberegister 74HC595


von Stephan W. (stipo)


Lesenswert?

Nabend zusammen,

nun tauchen im Stundentakt diverse Fragen auf :)
Einige kann ich mir selbst beantworten, andere leider nicht.

Hier mal ein Zitat aus dem Tutorial:

> Der AVR-Pin SS wird sinnvollerweise als RCK benutzt, da er sowieso als
> Ausgang geschaltet werden muss, sonst gibt es böse Überaschungen (siehe
> Datenblatt "SS Pin Functionality"). Dieser sollte mit einem Widerstand
> von 10K nach Masse, während der Start- und Initialisierungsphase, auf L-
> Potential gehalten werden. `(SS ist während dieser Zeit noch im Tri-
> State und es könnte passieren, dass die zufälligen Daten des
> Schieberegisters in das Ausgangslatch übernommen werden)

Ich habe eben beim lernen schon bemerkt, das öfters daran angeschlossene 
LED nach dem Spannung anlegen oder neu programmieren leuchten, obwohl im 
Programm alles aus sein sollte.

Wie kann ich den obigen Hinweis verstehen.

Die frage mag vieleicht etwas dumm klingen. Aber im Moment ist alles 
noch etwas neu und fremd. Die Elektronik Versuche damals in der Lehre 
waren sturr nach vorgabe (fertige Schaltungen). Dabei hat man eher 
weniger mit eigener Entwicklung eines Schaltung zu tun gehabt.

MFG
Stephan

von Joachim B. (jojo84)


Lesenswert?

Moin,

Stephan W. schrieb:
> Wie kann ich den obigen Hinweis verstehen.

Naja, es steht doch da :) . Und ein Blick ins Datenblatt ist ja auch oft 
schon sehr hilfreich... aber ok. Wärend des Programmierens komme ja wild 
daten an den MOSI und MISO-Pins an. Jetzt stelle man sich vor der SS-Pin 
(der an RCK hängt) ist im Tristate. Offene Eingänge (TriState) sind 
immer doof. Da weiß man nie, ob und was für Daten da grad ankommen. Dann 
würde das Schieberegister u.U. ungewollt Daten auf seinen Ausgängen 
rausgeben. Darum wird er extern (per Hardware) auf ein festes Potential 
gelegt. Das steht hier:

Stephan W. schrieb:
> Dieser sollte mit einem Widerstand
>> von 10K nach Masse, während der Start- und Initialisierungsphase, auf L-
>> Potential gehalten werden.

Nach der Initialisierung schaltest du ihn per Software auf Output und 
alles ist in Butter. Aber wie gesagt, so (oder so ähnlich...) steht das 
ja auch im Tutorial und im Datenblatt.

Hoffe ein paar Klarheiten konnten beseitigt werden.
Kannst du evtl. deine Frage nächstes mal konkreter formulieren? Dann ist 
das antworten einfacher... :)

Gruß

von Stephan W. (stipo)


Lesenswert?

Hallo Joachim,

ist im Moment alles noch etwas harte Kost :)

Ich habe eben etwas rum probiert. Beim übertragen des Code flackern die 
LED rum, was sich mit deiner Aussage trifft. Dann habe ich einen 10K an 
den Eingang des 74HC595 gehängt und wärend dem übertragen flackert es 
nicht mehr. Was mir da aber nun auffällt, das die zuletzt leuchtenden 
LED an bleiben, und erst nach dem Initialisieren des µC gelöscht werden.
Das soll aber nicht hier Diskutiert werden. Da mach ich mir erst selbst 
noch mal meine Gedanken, wie ich das ändern kann :)

Nun zu dem obigen. Hab ich das richtig verstanden, dass es reicht einen 
10K dauerhaft gegen Masse zu halten. Muss man den nicht im normalen 
Betrieb dann wieder weg schalten? Okay Rechnerisch fließt da ja bei 
einem 10K sehr wenig Strom gegen Masse.

MFG
Stephan

von Karl H. (kbuchegg)


Lesenswert?

Stephan W. schrieb:

> Ich habe eben etwas rum probiert. Beim übertragen des Code flackern die
> LED rum, was sich mit deiner Aussage trifft. Dann habe ich einen 10K an
> den Eingang des 74HC595 gehängt und wärend dem übertragen flackert es
> nicht mehr.

Ach jetzt hab ich dich verstanden. Die LED hängen am Schieberegister!

> Was mir da aber nun auffällt, das die zuletzt leuchtenden
> LED an bleiben,

logisch.
Das SR weiß ja nichts davon, dass du ein neues Programm reinschiebst. 
Also zeigt es weiterhin seinen Inhalt an.

> Das soll aber nicht hier Diskutiert werden. Da mach ich mir erst selbst
> noch mal meine Gedanken, wie ich das ändern kann :)

Tip: Das 595 hat einen Pin: Output Enable. Mit dem kann man dem SR die 
Ausgänge abschalten.

> Nun zu dem obigen. Hab ich das richtig verstanden, dass es reicht einen
> 10K dauerhaft gegen Masse zu halten.

Ja.
Das Problem war ja, dass der SR-RCK-Takteingang überhaupt nicht 
angesteuert wurde. Damit ist das ein offener Eingang, der sich jeden 
elektromagnetischen Schmutz aus der Umgebung zieht. Die Verbdindung zum 
µC macht das dann noch schlimmer, den plötzlich hat dieser Eingang dann 
auch noch eine wunderbare 'Antenne' bekommen.

> Muss man den nicht im normalen
> Betrieb dann wieder weg schalten?

Die 10k sind für den µC keine wirkliche Last. Die treibt der locker mit.

> Okay Rechnerisch fließt da ja bei
> einem 10K sehr wenig Strom gegen Masse.

Genau.

von Stephan W. (stipo)


Lesenswert?

So dann starten wir mal einen Versuch, ob meine Schaltungstechnik Idee 
so durch geht :)

> Tip: Das 595 hat einen Pin: Output Enable. Mit dem kann man dem SR die
> Ausgänge abschalten.
An dem 74HC595 ist das der PIN 13 (OE). Wenn ich den nun mit einem 10K 
gegen Vcc verbinde, und dann mit einem Ausgang am µC den gegen Masse 
ziehe, sollte das ja passen. Man verliert dadurch dann zwar einen Port 
am µC.

Eine bessere Lösung ist mir am im moment noch nicht eingefallen.
Aber das kommt alles noch :)

Danke noch, für die Hinweise und Hilfen.
Muss sagen, das Forum hier ist ***SPITZE*** :)

MFG
Stephan

von Joachim (Gast)


Lesenswert?

Stephan W. schrieb:
> An dem 74HC595 ist das der PIN 13 (OE). Wenn ich den nun mit einem 10K
> gegen Vcc verbinde, und dann mit einem Ausgang am µC den gegen Masse
> ziehe, sollte das ja passen. Man verliert dadurch dann zwar einen Port
> am µC.

Ich weiß jetzt grad nicht, ob der OE High- oder Low-active ist (Ich 
glaub low). Aber ja, so könntest du das machen. Ich hab bei mir den 
externen Pullup weggelassen, weil es bei meiner Anwendung nicht schlimm 
ist, wenn während des Programmierens die LEDs flackern. Du kannst den 
Pin auch ganz geschickt an einen deiner PWM-Pins hängen, weil du dann 
deine LEDs auchnoch dimmen könntest. Natürlich nur alle auf einmal, aber 
das wäre ja schonmal was :)

Gruß

von Thomas E. (thomase)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Tip: Das 595 hat einen Pin: Output Enable. Mit dem kann man dem SR die
> Ausgänge abschalten.

Kann man machen. Aber das kostet natürlich einen Pin.
Billiger wird es, wenn man den Reset des 595 nicht auf Vcc, sondern auf 
den Reset des Controllers legt. Die Ausgänge des 595 sind dann während 
der Programmierung 0 und über OC-Transistoren angeschlossene LEDs oder 
Relais sind aus.

Ganz nebenbei startet der 595er auch in einem definierten Zustand.

mfg.

von Peter D. (peda)


Lesenswert?

Thomas Eckmann schrieb:
> Ganz nebenbei startet der 595er auch in einem definierten Zustand.

Nö, das Ausgangsregister ist zufällig.
Der Reset wirkt nur auf das Schieberegister.


Peter

von Thomas E. (thomase)


Lesenswert?

Peter Dannegger schrieb:
> Nö, das Ausgangsregister ist zufällig.
Rückzieher. Der letzte Zusatnd bleibt bestehen.

Peter Dannegger schrieb:
> Der Reset wirkt nur auf das Schieberegister.
Aber das ist ja auch nicht schlecht.

mfg.

von Peter D. (peda)


Lesenswert?

Thomas Eckmann schrieb:
> Peter Dannegger schrieb:
>> Der Reset wirkt nur auf das Schieberegister.
> Aber das ist ja auch nicht schlecht.

Ich finde es vollkommen nutzlos.

Es ist doch egal, ob ich 0x00 reinschiebe oder Reset setze, ich brauche 
in jeden Fall noch eine High-Flanke an RCK, damit der Ausgang gültig 
wird.


Peter

von Thomas E. (thomase)


Lesenswert?

Peter Dannegger schrieb:
> Ich finde es vollkommen nutzlos.
Schlecht ist es deswegen trotzdem nicht.

Aber hauptsächlich geht es darum, daß die Ausgänge beim ISP-Upload nicht 
rumflattern. Was bei einer LED ja nicht weiter schlimm ist, aber ein 
Relais nervt dann doch. Und das wird mit dem Reset verhindert.

Peter Dannegger schrieb:
> ob ich 0x00 reinschiebe
Das dauert doch viel länger.

mfg.

von Peter D. (peda)


Lesenswert?

Thomas Eckmann schrieb:
> Aber hauptsächlich geht es darum, daß die Ausgänge beim ISP-Upload nicht
> rumflattern.

Wie oben ja schon beschrieben, einfach nen Pullup an /OE des 595 und 
alle Ausgänge sind definiv aus, bis der MC den /OE auf low setzt.


Peter

von Thomas E. (thomase)


Lesenswert?

Peter Dannegger schrieb:
> bis der MC den /OE auf low setzt.
Aber das kostet einen Pin. Und bevor ich ich den Reset disable...
Jetzt lass' uns hier nicht endlos über solche Kleinigkeiten diskutieren.

mfg.

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.