Fehlerquelle bei Ansteuerung Schieberegister

  • Hi liebes Forum!:shy:

    Ich möchte mit Schieberegistern (SN74HC595N) die Ausgänge meines PIs erweitern. Soweit so gut. Das Programm habe ich geschrieben und ich denke ich habe die Funktionsweise des SN74HC595N verstanden.

    Nun habe ich aber das Problem, dass wenn ich den RPi3 anstecke, die LEDs sofort zufällig zu leuchten beginnen, ohne dass überhaupt schon irgendetwas gestartet ist. Das komische dabei ist, dass es sehr sporadisch ist, welche der 8 angeschlossenen LEDs leuchten. Manchmal alle, manchmal 3 oder vier, manchmal gar keine. Die Anzahl und Position ist also komplett zufällig...

    Das Schieberegister selbst ist nicht defekt, ich habe mehrere zuhause und daran liegt es leider nicht...:denker:

    Ich als Laie schließe daraus, dass die GPIOs, an die ich das Schieberegister angeschlossen habe beim Starten Strom abgeben bzw beim starten nicht fix auf 1 oder 0 definiert sind??

    Ich finde nur komisch, dass ich auf anderen Seiten, auf denen der Anschluss eines Schieberegisters beschrieben ist, dieses Problem nie angesprochen wurde. Habe nur ich das, oder habt ihr damit auch schon mal Erfahrung gemacht?:daumendreh2:

    Ich dachte zuerst es liegt daran, dass manche GPIOs spezielle Funktionen haben und beim Booten Signale abgeben (I2C oder so??) - kann mir das jemand bestätigen? Naja, dann habe ich es mit Pins belegt, die keine Funktion haben und das Problem besteht weiterhin...

    Mein Ziel ist es, dass beim einstecken einfach alles aus bleibt.

    Ich habe hier: https://wiki.ubuntuusers.de/rc.local/ gesehen, dass man beim Booten Programme, Scripte, Befehle etc. automatisch starten kann. Ist es aus eurer Sicht möglich, da ein Python Script öffen zu lassen, welches [0,0,0,0,0,0,0,0] in den Ausgang des Registers schreibt? Denn wenn das Betriebssystem einmal gestartet ist, dann kann ich im jetzigen Zustand ganz normal manuell das Schieberegister steuern. Und vor allem: Wann wird das Programm dann genau ausgeführt? wirklich ganz am Anfang? Außerdem: Wie sauber wäre so eine Lösung?

    Noch eine Frage abseits des Schieberegisters: Welche GPIOs lassen sich für EINGABEN (von Tastern über Pullup-Widerstände) effektiv nutzen? Ich habe gelesen, dass man manche Pins am besten gleich links liegen lässt. Ich brauche so ca 20 PINs für Eingaben und eben die 3 für das Schieberegister... Geht sich das aus un wie viel Reserve habe ich da noch?

    Müssen dazu manche PINs umkonfiguriert werden?

    GLG und danke im Vorhinein!:gk1:

    Aja: Meine Schaltung Schaut genau so aus, nur mit den PINs 5,6,26 - wie gesag, mit 4,5,6 hab ichs auch bereits probiert ;)

    Betriebssystem Raspian GNU/Linux 9

    Linux Kernel 4.19.66-v7+

    Release Datum 2017-11-29

    1.png

    Code Programm: (eigenltich unerheblich)

    2 Mal editiert, zuletzt von Jonny98731 (14. September 2019 um 13:00) aus folgendem Grund: Aktualisierung Infos Betriebssystem + Code

  • Ich habe hier: https://wiki.ubuntuusers.de/rc.local/ gesehen, dass man beim Booten Programme, Scripte, Befehle etc. automatisch starten kann. Ist es aus eurer Sicht möglich, da ein Python Script öffen zu lassen, welches [0,0,0,0,0,0,0,0] in den Ausgang des Registers schreibt? Denn wenn das Betriebssystem einmal gestartet ist, dann kann ich im jetzigen Zustand ganz normal manuell das Schieberegister steuern. Und vor allem: Wann wird das Programm dann genau ausgeführt? wirklich ganz am Anfang? Außerdem: Wie sauber wäre so eine Lösung?

    Nö:

    rc.local ist seit dem Jahre 1983 obsolet. Es diente bei der Einführung des damals neuen, heute veralteten SysV-Init-Systems als Workaround für die Beibehaltung noch älterer Methoden zur Systeminitialisierung.

    Debian (und somit Raspbian) sind schon vor einer Weile (vor 3 Versionen) von SysV-Init zu Systemd gewechselt.

    Edit: andererseits... du verrätst uns ja nicht, welches OS du verwendest. Frage lässt sich daher nicht beantworten. Wie Frage ich nach Hilfe?

  • Moin Jonny98731,

    hast du den SN74HC595N einfach so an den RPi angeschlossen?

    Was hälst du den von Pullup-Widerständen an den 5 Eingängen. Zumindest einen an der OE-nicht-Leitung. Dann sind die Ausgänge gesperrt.

    Dann muss dein Programm als erstes alle Ausgänge auf "0" setzen.

    Gruss Bernd


    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin Jonny98731,

    Für nen Pullupwiderstand bräucht ich ja in irgendeiner Form einen Schalter oder nicht?

    Noe.

    Einfach nur einen Widerstand von +3,3V an den Eingang des Ic's.

    Ausführliche Informationen, siehe hier.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!