Zwischenspeichern der von einem 4-16-Zeilen-Decoder erzeugten Werte

Ich verwende einen 4- bis 16-Zeilen-Decoder, um eine 4-Bit-Zahl von Arduino/Seeed/ESP32 in Treiberschaltungen wie RGB-LEDs umzuwandeln, die sonst alle meine Pins verbrauchen würden. Es gibt einige Probleme mit diesem Ansatz, die ich durch Studium der Datenblätter gelöst habe, aber eines hat mich ratlos gemacht: Beim 74HC154 kann jeweils nur ein Pin aktiv (niedrig) sein. Wenn ich also 5 RGB-LEDs mit gemeinsamer Anode anschließe, kann ich nur jeweils pulsieren R/G/B-Kathode für 1/15 der Zeit, sodass sie schwach sind.

Ich brauche eine Art 16-Kanal-Latch mit Clear-Funktion, die ich neben den Decoder stellen kann, damit ich aktive (niedrige) Pins sammeln kann, bis ich den Clear-Pin pulsiere. Das ist das, was ich benötige:

Chip links: Eingänge 0-15, Chip rechts Ausgänge 0-15 und ein Clear-Pin.

  1. Puls Clear Pin und ALLE Ausgänge gehen hoch
  2. Pulse jeden gewünschten Dateneingangspin (zB: 3,5,7)
  3. Die entsprechenden Ausgangspins gehen auf Low und STAY Low, um die gewünschte LED-Farbe zu steuern
  4. 1 ms warten
  5. Puls frei, um neu zu beginnen

Auf diese Weise kann ich den Decoder verwenden, um den Verriegelungschip zu "programmieren" und ihn die LEDs für 1 ms oder ähnliches ansteuern lassen, dann löschen und die nächsten 1 ms ausführen. Wenn ich das schnell genug kann, kann ich sogar Software-PWM durch die Chips senden und grundlegende RBG-Funktionalität haben (statt nur R oder G oder B oder W oder Cyan oder Magenta oder Gelb oder aus).

Ich habe Buskonverter und Flipflops recherchiert, aber ich kann diese Funktionalität nicht finden, ohne viele Chips miteinander zu verdrahten. Gibt es einen solchen Chip oder kann er zusammengebaut werden? Wenn nicht, wie würden Sie das Grundproblem lösen?

Das klingt sehr nach einer billigen MCU. Sie können ganz einfach die benutzerdefinierte Software dafür schreiben. Auch flexibel, da Sie die Software im Laufe der Zeit Ihren Bedürfnissen anpassen können. Das heißt, ich kann nicht viel mehr sagen, weil ich kein Diagramm des Geräts sehe, das Sie erstellen möchten, mit Ein- und Ausgängen, die schön mit Zeitdiagrammen angeordnet sind. Kannst du mehr schreiben?
Das klingt nach einem billigen und einfachen CPLD. Sie können die kleine HDL schreiben, die für die gewünschte einfache Logikschaltung benötigt wird, und sie nach Belieben modifizieren. Ihre Schaltung kann die gewünschten Timings haben. Sie können auf Ihrem Computer simulieren und jedes Gate in Ihrer Schaltung sehen. Es ist einfach und leicht zu erlernen, wenn Sie nicht wissen, wie es geht, es gibt Berge von Informationen und Lehranleitungen sowie viele billige Demoboards, wenn Sie es ausprobieren möchten, bevor Sie sich entscheiden. Die Entwicklungssoftware, die Sie benötigen, ist kostenlos herunterzuladen und zu verwenden.
Zwei 74xx259-Chips. Zum zweiten Mal in dieser Woche ist dies aufgetreten.

Antworten (1)

Vielen Dank für Kommentarideen.

Ich könnte ein PLA oder ein CPLD verwenden, da stimme ich zu, aber darauf möchte ich jetzt nicht eingehen. Ich habe es auf drei Optionen eingegrenzt, um den Anwendungsfall anstelle des 4-zu-16-Decoders zu lösen, was für mich nicht der richtige Weg war.

  1. Nur für LEDs gibt es den MAX7219, der 64 LEDs steuert. Vielleicht kann dies RGB auf weniger LEDs oder mehreren Chips ausführen;

  2. Für die allgemeine Ausgabe ist die Komponente, die ich wollte, ein Schieberegister wie 74hc595;

  3. Für LEDs gibt es Charlieplexing (könnte vielleicht an den allgemeinen Fall angepasst werden, indem Dioden in Reihe mit der Last verwendet werden) http://www.pcbheaven.com/wikipages/Charlieplexing/

Ich verdanke die Antworten diesem Artikel: https://arduino.stackexchange.com/questions/117/is-there-a-way-to-have-more-than-14-output-pins-on-arduino

Obwohl ich akzeptiere, dass dies eine Änderung des Ansatzes ist, keinen Decoder mehr zu verwenden, ist dies die Lösung für meine Frage im Geiste.

Herzlich Willkommen auf der Seite. Ich glaube, Sie verwenden Answer auf dieser Seite so, wie Reply in Diskussionsforen verwendet wird. Da dies keine einzelne Antwort auf die Frage ist, können Sie diese Informationen am Ende in Ihrer Frage bearbeiten und dann diese Antwort löschen. Nochmals vielen Dank und nochmals herzlich willkommen.
spl - Hallo, diese Antwort ist mir nicht klar. Entweder (a) Sie wollten es wirklich als Antwort schreiben , weil es Ihre ursprüngliche Frage wirklich beantwortet (auch wenn es das für mich nicht zu tun scheint). Geben Sie in diesem Fall bitte deutlich an, dass dies die endgültige Lösung für Sie ist und Sie keine weiteren Antworten wünschen/benötigen. Dann kommen Sie bitte in 2 Tagen zurück, um diese Antwort zu "akzeptieren", um das gesamte Thema zu schließen ( Selbstantworten können erst nach Ablauf von 48 Stunden nach dem Stellen der Frage akzeptiert werden).
[Fortsetzung] Oder (b) Sie wollten nicht, dass dies die endgültige Antwort ist, und Sie möchten noch mehr Antworten. In diesem Fall ist dies, wie oben kommentiert, ein Update und keine Antwort und muss in Ihre ursprüngliche Frage "bearbeitet" werden, z. B. unter der Frage auf "Bearbeiten" klicken, diese neuen Informationen unten hinzufügen und dann diese Antwort löschen. || Was trifft hier zu, (a) oder (b)? Danke.