PullUp / Down - Widerstände am 74HC595

Hallo liebe Gemeinde,

ich bin verwirrt... folgendes Szenario:
Das Schieberegister ist mit seinen Input-Pins Data, Shift und Store an den (zuvor konfigurierten) Output-Pins A0 bis A2 des Nano angeschlossen. OutputEnable ist fix mit GND verbunden, MasterReset mit VCC und ein Abblockondensator zwischen VCC und GND. Die Ausgänge gehen auf einen Leistungstreiber, das spielt hier aber keine Rolle.
Ich möchte nicht dass das Schieberegister beim Booten des Boards einen undefinierten Zustand einnehmen - und damit den Leistungstreiber schalten - könnte, da A0 bis A2 ja erst per Software im 'setup ' als Ausgänge definiert und auf LOW gesetzt werden.
Ließe sich das mit PullUp bzw. -Down Widerständen an den drei "Datenpins" verhindern, d.h. sie per Hardware auf einen definieren Pegel ziehen - und falls ja, wäre eine Methode zu bevorzugen?
Ich habe leider noch keine Möglichkeit dies auf dem Breadboard zu testen, da die Teile schlicht und einfach noch nicht da sind. Die obrige Beschreibung basiert auf einem Platinenlayout, welches ich entworfen habe und noch habe ich Platz die drei Widerstände ggf. unterzubringen.

Vielen Dank und liebe Grüße
Cox

Nach Reset des µCs sind die IOs als Eingänge konfiguriert, also hochohmig. Das Schieberegister dürfte davon seinen Zustand nicht ändern.

Die statischen Zustände der Signalleitungen haben keinen Einfluß auf den Inhalt des Schieberegisters.
Erst eine Folge von Impulsen (Clock, Data und RCK) ergibt eine Datenübertragung/ Datenabspeicherung und somit Veränderung der Schieberegisterausgänge. Darum ist der Zustand der Signalleitungen uninteressant.
Sicher könnte theoretisch es möglich sein daß Störungen im Zeitraum von Einschalten der Versorgungsspannung und aktivieren der Arduino-Pins Daten in das Schieneregister laden könnten.
Eine ungewollten Ausgangszustand des Schieberegister mußt Du aber anders ausschließen:
Du mußt den Eingang !QE benutzen. Mittels eines Pullupwiderstandes hälst Du ihn auf HIGH.
Die Ausgänge sind dann hochohmig. Eventuell brauchst Du an den Ausgängen Pullup bzw Pulldown-Widerstände, das hängt aber vom Verhalten des Leistungstreibers im Bezug auf Eingänge ohne definiertes Spannungspotential ab.
Nach dem Booten des Arduinos setzt Du die Ausgänge und beschreibst das Schieberegister. Dann schaltest Du mittels eines weiteren Arduino-Ausgang den !OE Eingnag auf LOW. Die Ausgänge des 595 sind jetzt aktiv ( H bzw L je nach gesendeten Daten)
Du brauchst halt 4 statt 3 Arduino-Ausgänge.

Grüße Uwe

EDIT keinen zum Einfluß im ersten Satz hinzugefügt

Du meinst "haben keinen Einfluß", richtig?

Das wäre in der Tat gefährlich! Sichere Abhilfe: nimm richtige Port-Expander (PCF8574, MCP23017...) mit internem Reset oder mit offenem Kollektor und eingebauten Pullups.

Sonst müßtest Du die Ausgänge erst einmal disabeln (OE high) und dann mit PullUp/Dn in den gewünschten Zustand ziehen. Später den Zustand richtig einstellen und die Ausgänge einschalten (OE low). Dafür braucht der OE einen eigenen Ausgangs-Pin des Arduino.

Ja, meinte ich, schrieb es aber anders.
Danke für das aufzeigen. Hab es korrigiert.
Uwe

Guten Morgen, liebe Gemeinde... und vielen Dank für die Antworten.
Jetzt ist der Urlaub vorbei, das Wetter so lala und die benötigten Bauteile sind endlich da. Es tritt genau das ein was ich "befürchtet" hatte: Beim Einschalten der Spannungsversorgung schaltet der HC595 für den Bruchteil einer Sekunde (vermutlich bis im Setup das Register mit NULL beschrieben wird) durch und befeuert damit den Leistungstreiber (UDN/MIC2981) , das ist mehr als unschön. Deshalb würde ich gern auf dem Steckbrett das Ganze wie ihr oben beschrieben habt mit dem Pin OE versuchen, der aktuell noch fix auf GND liegt:

Allerdings stehe ich da gerade völlig auf dem Schlauch wie ich es verschalten kann / muss / darf /soll, ich möchte natürlich auch nichts kaputt machen. Es wäre toll von euch, wenn mir das jemand "für Dummies" erklären könnte.

Vielen Dank schon mal für eure Mühen!
Grüße, IRCox

also ich wäre ja noch immer dafür:

Wobei sich eigentlich die Frage stellt, wie das gesamte System ausschaut.
Ist ein Shiftregister wirklich das richtige für das was du da tust - auch wenn du glaubst, dass "es keine Rolle spielt". Tut es.

mit einem größeren externen Pullup Widerstand den OE/strich auf HIGH legen
mit einem Arduino Pin diesen dann auf LOW ziehen.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.