Shiftregister mit C auslesen

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Moin,

    ich könnte etwas Hilfe gebrauchen!
    Vorab, ich hab noch nicht besonders viel Erfahrung in diesem Bereich gesammelt:)

    Ich möchte nichts weiter tun, als ein Shiftregister (CD4021B) von meinem RPI über ein kleines C Programm auslesen, um zu erkennen welcher Knopf gedrückt wurde.

    Hier mein Schaltplan, den ich falls möglich auch gerno so verwenden würde:
    a553f7-1452239785.jpg

    Mit dem Arduino ist das auch recht simpel, bzw. man findet viele Tutorials um das auch als [font="Icons, Georgia, serif"]Laie umsetzen zu können.[/font]

    [font="Icons, Georgia, serif"]Codebeispiel mit Arduio [/font]

    Ein paar Beispiele für den RPi habe ich gefunden wo allerdings der SPI Bus verwendet wird.
    Code Beispiel: (Using The SPI Interface).
    Nur bin ich mir hier mit der Verkabelung unsicher, an dem CD4021 hab ich ja nur 3 pins zur steuerung (Data in, Clock, Latch).

    Kennt jemand ein gutes Tutorial/Example für den RPi das ähnlich simpel wie das Arduino beispiel ist?
    Oder wenigstens ein Tutorial was zeigt wie man mit dem RPi ein ShiftIn Register mittels SPI ausliest?


    grüße, Jan

  • also ich halte mich da immer an das Datenblatt - z.B. hier http://www.unisonic.com.tw/datasheet/CD4014B.pdf
    Und das Timing des SPI findest du hier https://de.wikipedia.org/wiki/Serial_Peripheral_Interface
    Guck dir mal das Datenblatt und das Timing an. Vielleicht kommst du ja damit zurecht. Wenn nicht, frag nochmal konkret.

    Ich versteh das so, dass du mit dem Schieberegister die Daten Bit für Bit auslesen musst. Kann man so tun und gibt sicher auch gute Gründe dafür. Ich würde aber eher z.B. eine Tastaturmatrix verwenden, wenn das die Applikation hergibt, also z.B. jede Taste frei verdrahtbar, also nicht alle an einer Seite gemeinsam...
    Da würde sich z.B. eine 3x4 Matrix anbieten, da brauchst dann 7 Portbits. Zugegeben du brauchst nur 3. Es gibt fertige Tastaturen, die als Matrix geschaltet sind.

  • Servus poiz,
    wo genau hakt es denn?
    Der Arduino-Code verwendet auch SPI und das kannst Du auch beim RPi machen (entweder mit der passenden Lib - z.B. -> pigpio <- oder -> bcm2835 <- oder ...).
    So gesehen könntest Du den Arduino sketch, zumindest vom Aufbau her, direkt übernehmen.

    cu,
    -ds-

  • Achtung das IC hängt an 5V und würde auch 5V ausgeben, der PI verträgt keine 5V am GPIO, ausser du willst den PI Umsatz ankurbeln

    pinMode(myDataPin, INPUT); gibt mit Sicherheit vom IC 5V Impulse an den PI

    alle ausgehenden PINs vom PI können das latch ansteuern, alle reinkommenden Daten sollte man über einen 74HC4050 leiten welcher an VCC 3,3V hängt der dann die Impulse nur mit 3,3V zum PI leitet.
    wer zusätzlich noch die PI Ports mit Serienwiderständen 470 Ohm anschliesst und die GPIO mit Ableitdioden BAT42/47/48 nach V3,3V schützt ist relativ auf der sicheren Seite was den PI angeht.

    Für die Aufgabe geht SPI oder bit banging, ein Clk erzeugen ein Bit lesen usw.

    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 (8. Januar 2016 um 15:50)

Jetzt mitmachen!

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