Schieberegister an Raspberry Pi

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hey,

    hat jemand schon mal von euch Schieberegister dran gebaut? Kann man mir ggf. dabei ein bischen helfen? Bislang habe ich lediglich Schieberegister an einen µC gepackt. Es geht auch lediglich um die Schieberegister, welche Daten raus schieben und nicht rein ziehen.

    Wenn ja, kann man diese via Python ansteuern?


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • ??? wie jedes andere GPIO Kommando auch , setze einen Port high oder low, wie das Bit eben ist für Data und einen Port für den Takt der muss dann einmal wechseln und zurück, je nach Schieberegister high low high an clk oder umgekehrt !

    dann schiebt clk die Data ins Schieberegister.

    danach neues Bit setzen high oder low und wieder clk zum schieben

    http://de.wikipedia.org/wiki/Schieberegister

    manchmal muss man je nach IC Enable setzen oder fest verdrahten.

    ein 8-bit braucht 8 Schiebebefehle um vollständig gefüllt zu werden, ein 4-bit nur 4, ein 16-bit ?

    mann kann auch mehrere Register in Reihe schalten um vielfache zu schieben, als seriell parallel wandler !

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (24. Dezember 2013 um 22:00)

  • Ich dachte, es gibt evtl. auch wie z.B. in Bascom eine "Fertige" Struktur wo man mitteles eines Befehls, die Daten ins Register schiebt, der ebenso den Takt für diesen Generiert.

    Aber dann werd ich mir was eigenes Fertiges zurechtbasteln.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • So ich komme endlich dazu mich mit diesem Teil noch mal zu beschäftigen. Werde die Nächste Zeit bischen mehr Zeit haben. Nur kommt nun noch die ein oder andere Frage auf.

    An das Schieberegister denke ich kommt 5V als Versorgungsspannung und die Signale also Clock, Data und Strobe kommen vom Pi selber über die GPIOs direkt? Oder über "Hilfsschaltungen"?

    Ich wollte da noch mal nachharken, bevor ich meinen Pi ins Jenseits schieße. Den ich habe beim ersten googlen schon min 2 verschiedene Ansätze gefunden und wollte daher lieber noch mal vorab fragen. Es sollen aber lediglich paar LEDs geschalten werden über das Register, werde aber ein ULN2803 zwischen LEDs und Schieberegister setzen.

    Hoffe jemand kann mir da noch etwas helfen und evtl. noch den ein oder anderen Tipp / Ratschlag geben.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Es geht ja primär dadrum ob ich das Register mit 5V Betreiben kann und die direkt an die GPIOs hängen kann oder ob ich Umwege gehen muss, da sonst die GPIO Pins Kaputt gehen könnten? Weil dadrüber wird dort ja nichts so richtig erwähnt. Oder ich habs übersehen.

    Also das Ansteuern an sich hab ich schon mal gemacht, aber wie erwähnt mit einem Atmel, und die Arbeiten von Natur als mit 5V und da der Pi mit 3,3V Arbeitet wollt ich mal nachfragen.

    Und wegen der Treiber, das macht kein Ding. Hab da mal vor ne weile bei Ebay ein abgeschossen :). Also habe dort 40 oder 50 Treiber für um die 5€ erworben und das inkl. Versand.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

    Einmal editiert, zuletzt von RaspiDo (30. März 2014 um 14:06)


  • Es geht ja primär dadrum ob ich das Register mit 5V Betreiben kann und die direkt an die GPIOs hängen kann oder ob ich Umwege gehen muss, da sonst die GPIO Pins Kaputt gehen könnten? Weil dadrüber wird dort ja nichts so richtig erwähnt. Oder ich habs übersehen.
    Michael

    erst mal fast alle 74HC können mit 3,3V arbeiten (ich wüsste jetzt keine Ausnahme)
    damit sind 5V chips am PI nicht nötig (nur das eben die 3,3V Quelle vom PI nicht viel Reserven hat, ausser nach KIS Umbau des RG2)

    Wenn es nur Signale PI -> extern gibt, alle PI GPIO als Ausgang und da nix reinläuft, dann können Chips am GPIO auch mit 5V laufen so sie keine 5V Beschaltung haben, typische CMOS eben. Die erkennen high ab 2,5V was vom PI ja mit 3,3V kommt !

    Nur das eben 74HC an 3,3V Versorgung Vcc oder Vdd maximal 3,3V ausgeben, was für manche uh LEDs etwas wenig sein kann, weiss, blau bedingt

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Also nur zum meinen Verständnis,

    1. Da der 4094 nur Signale raus gibt kann ich ihn sowohl mit 3,3V als auch mit 5V Betreiben. Richtig?

    2. Da die 3,3V des Pis im normalzustand doch begrenzt sind macht es eher Sinn sich an die 5V zu halten als Versorgungsspannung des CMOS und die 3,3V dafür nicht benutzen. Auch richtig?


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:


  • Also nur zum meinen Verständnis,
    1. Da der 4094 nur Signale raus gibt kann ich ihn sowohl mit 3,3V als auch mit 5V Betreiben. Richtig?

    wohin ein Chip Signale ausgibt liegt nur an der Beschaltung !
    Die Richtung könnte auch zum PI gehen und dann verbieten sich 5V und mehr !

    4000er ICs sind nicht immer mit 3,3V zu betreiben, manche nehmen auch 15V
    bei 74HCxxxx ist es sicherer


    2. Da die 3,3V des Pis im normalzustand doch begrenzt sind macht es eher Sinn sich an die 5V zu halten als Versorgungsspannung des CMOS und die 3,3V dafür nicht benutzen. Auch richtig?
    Michael

    richtig, aber wenig angeschlossene CMOS 74HCxxxx nehmen nicht viel Strom auf und würden auch an den eingebauten 3,3V gehen wenn sie selber nicht viel Strom ausgeben sollen !

    Die CMOS Chips brauchen nur kurz im Schaltmoment für ns Strom.
    Im stabilen Zustand geht das ohne Last auf wenige µA zurück

    Also wäre mein Tip, die 74HC595 an 3,3V zu hängen, die Ausgänge zu ULN und die ULN mit LED an 5V

    Höhere Eingangsspannungen zum PI über 74HC4050 an 3,3V Versorgung angeschlossen bringen
    Versorgung 3,3V damit der PI nie mehr sieht, die 74HC4050 verkraften am Eingang bis zu 15V am Eingang

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ja gut, aber die 4094 sind Schieberegister die raus schieben. Also es geht bei den nur die Richtung, soweit ich weiß. Aber ich werd mir dann mal den Typ nehmen, den du oben gennant hast und es nach deinem Tipp testen.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Ich hab es hin bekommen.

    Ist zwar für den Anfang nur ein "Lauflicht".

    Aber ich denke für den ersten versuch nicht schlecht.

    [spoiler="Hier mal der Code für den, den es Interessiert"]

    [/spoiler]

    Ich hoffe es gab kein Fehler beim Kopieren.

    Ich bin am überlegen, die while - Schleife und die definition der Pins in ein eigenes Modul zu packen, mit der ich dann das Register ansteuere. So brauch ich nicht für jeden Zugriff auf ein Schieberegister diesen Blödsinn neu zu gestalten.

    Sollte evtl. nur die GPIO Pin Nummern gegen Variablen tauschen.

    Also dass soll dann am Ende so laufen, ich binde das Modul ein und rufe es an der nötigen stelle mit Parameterübergabe auf. Für die Parameter reicht ja entweder Pinnummern und Daten bzw. bei einer "Deluxvariante" noch die angabe, wieviele Register gefüllt werden sollen.

    Klingt doch ganz nett oder?


    Michael

    PS: Es gibt sicher Dinge, die man eleganter lösen könnte, von daher gerne Tipps. Aber bitte langsam bin noch relativer neuling was Python angeht und hab mir das ein oder andere gerade bei Google zusammen gesucht und das andere durch austesten herraus gefunden. Vielleicht kann mir aber jemand noch zugleich ein Tipp geben, wie ich eine Funktion noch aufrufen kann, wenn ich ein Programm manuell über STRG + C beende? Also das dann die GPIOs noch "gesäubert" werden mittels GPIO.cleanup().

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

Jetzt mitmachen!

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