GPIOs als Byte zusammenfassen

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Nach ner halben Stunde gurgeln dachte, fragst mal in die Runde, Vlt. Kennt jemand ne Lib.
    Also ich würde gerne GPIOs als Byte zusammenfassen und darüber byteweise Ein-/Ausgaben machen.
    Kennt einer ne passende Lib? Gerne auch C.

    Danke
    Reraspi

  • kann nicht klappen weil mehr GPIO als 8-bit

    aber du kannst dir doch deine Wunschbits vom GPIO selber in ein Byte schieben ! oder mehr in 2 Byte

    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)

  • Danke für die Antwort.
    Das Problem ist, ich will 8 GPIOs nehmen. Welche ist eigentlich egal. Stellen wir uns vor, da soll ein Drucker mit ner alten Parallelschnittstelle dran.
    Der Punkt ist, der Drucker soll die Bits synchron als Byte bekommen. Die Steuersoftware im raspi kann sie gern seriell in ein Register schieben.
    Natürlich könnte ich von außen ein Schieberegister dranfummeln, aber ich habe gehofft, dass der Raspi, das bei der Menge an IOPorts irgendwie auch selber kann.
    So wie beim Arduino. Eigentlich nur IO Befehle um bitweises IO machen zu können. Seh ich mir aber die AVR Befehle an, kann ich mit dem Teil problemlos auch bytewises IO machen.

    Reraspi

  • Salve reraspi,


    ...
    Also ich würde gerne GPIOs als Byte zusammenfassen und darüber byteweise Ein-/Ausgaben machen.
    ...

    hmm ... also wenn ich das richtig verstehe, dann willst Du quasi eine parallele Schnittstelle basteln.
    Das ist allerdings jetzt nicht ganz so einfach ...
    Klar, mit einer beliebigen Lib ( pigpio, bcm2835, wiringPi, ... ) kannst Du einzelne I/Os setzen ... acht Stück und bingo - ein Byte :) ...

    Aber: Du kannst die Pins nicht gleichzeitig setzen ... sondern immer nur einen nach dem anderen. Klar - das geht rasend schnell - trotzdem ist es nicht zeitgleich.
    Deswegen haben z.B. Druckerschnittstellen noch eine Strobe-Leitung. Die gibt an, wann an allen Pins das richtige Signal anliegt. Erst dann wird das Byte abgeholt.
    Alternative: ein Schieberegister ... da schiebst Du Bit für Bit rein und zum Schluss feuerst Du das Ganze als Byte ab ... geht imho genau fast so schnell. Und funktioniert ebenfalls über einen Strobe.

    Wenn Du etwas genauer erzählst, was Du vor hast, findet sich auch eine für Dich funktionierende Lösung.

    cheerio,
    -ds-


  • Aber: Du kannst die Pins nicht gleichzeitig setzen ... sondern immer nur einen nach dem anderen. Klar - das geht rasend schnell - trotzdem ist es nicht zeitgleich..

    Ja genau, hatte gehofft, dass der Baustein das ansich schon kann. Und wie es aussieht, gibt es da zumindest Befehle um bankweise zu lesen und zu schreiben. Das sind da aber jeweils 32bit. Hab mich allerdings noch nicht so genau eingelesen.
    Ich will tatsächlich sowas wie einen Parallelport selber implementieren. Mehr so als Fingerübung, weil ich denke, dass das eigentlich gehen müsste. Klar, mit nem Expander wär ich schneller am Ziel. Aber wär auch irgendwie pervers. Da hab ich nen B+ vor mir liegen, der nochmal ne ganze Reihe zusätzlicher IOs hat und dann verwende ich 2 davon, häng einen Expander dran um nochmal 8 IOs zu bekommen ;)

    Reraspi

  • oder du nimmst ein stinknormales 8-bit latch

    setzt bit by bit und wenn fertig mit einem neunten GPIO übernimmst du alle 8-Datenbits zeitgleich

    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)


  • oder du nimmst ein stinknormales 8-bit latch
    setzt bit by bit und wenn fertig mit einem neunten GPIO übernimmst du alle 8-Datenbits zeitgleich

    Ja, das sollte gehen, zumal ne Pegelanpassung ja ohnehin gemacht werden muss.
    Quäl mich grad durch die BROADCOM BCM2835 Doku. Sieht echt so aus, als wenn die Ports nur einzeln oder als komplette bank(32bit) gesetzt werden können.

    reraspi

    Also, falls es jemanden interessiert.
    bit banging in 32bit parallel mode lässt sich tatsächlich machen. Schreiben und lesen.
    Hier hats mal einer gemacht: 32bit lesen und schreiben
    Hab aber bisher noch kein Lib gefunden, wo das mal mit eingearbeitet ist. Und zum selbermachen fehlt mir im Moment die Zeit;-(
    reraspi

    Einmal editiert, zuletzt von reraspi (21. Juli 2014 um 00:37)

Jetzt mitmachen!

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