74hc595n Schieberegisterfehler

Ich möchte in Serie 2 74hc595N einbauen. Ich habe den Schaltplan von hier gemacht :

Abbildung 1

Wenn ich einen Wert sende, sendet ihn das erste Register auch an das zweite. Ich habe auf beide den gleichen Wert. Ich ändere sie (Master/Slave), aber das Ergebnis ist das gleiche. Was ich falsch mache, weil ich es vor einigen Tagen gemacht habe und es funktioniert hat ... Ich kann es nicht herausfinden.

Antworten (3)

Alberts Eisdiele

Albert, Bob, Charlene und Daisy sind in alphabetischer Reihenfolge aufgereiht.

Albert ist in der Rolle des CPU und schöpft das Eis. Zuerst schöpft er das Dattel-Rosinen-Eis aus und reicht es Bob – obwohl Bob Rosinen hasst! Dann schöpft Albert das Schokoladeneis aus und reicht es auch Bob. Schließlich holt Albert einen braunen Kuhwagen heraus und gibt ihn auch Bob.

Bob, Charlene und Daisy sind in der Rolle der '595-Daisy-Chain-Warteschlange. Es funktioniert wie ein Fließband. Wenn alles klappt, bekommt Daisy das Dattel-Rosinen-Eis, Charlene das Schokosplitter-Eis und Bob den braunen Kuhwagen.

Gelegentlich treibt die CPU einen positiven Übergang am "Latch-Pin", auch "Speicherregister-Taktpin" genannt, an Pin 12 des '595. Das ist, als würde Albert schreien: „Alles fertig. Genieße das Eis vor dir!“

Dann sind alle glücklich. (Sogar Bob, der Rosinen hasst, ist glücklich).

Hardware

Es sieht so aus, als ob Ihre Hardware in Ordnung ist - der CPU-MOSI-Ausgang (in Ihrem Fall der Arduino-Pin 2) ist mit dem MOSI-Eingang des ersten '595-Pins 14 verbunden; und der Daisy-Chain-MISO-Ausgang des ersten '595-Pin 9 ist mit dem MOSI-Eingang des zweiten '595-Pin 14 verbunden.

Software

Ich bin mir ziemlich sicher, dass wir einen kleinen Programmierfehler oder einen kleinen konzeptionellen Fehler sehen: Warum denken manche Leute, dass „255“ etwas Besonderes ist?

Es hört sich so an, als würde die Software 8 Bits an den ersten 595er Chip senden.

Jedes Mal, wenn Sie mit shiftRegister.send() ein Byte an das erste '595 senden, werden alle Daten, die sich gerade in diesem ersten '595 befinden, aus diesem heraus und in das zweite '595 verschoben. So sollen verkettete Schieberegister funktionieren. Der zweite '595 in der Kette ist immer aktiv.

Oft haben wir eine lange Kette von 595er Chips und wollen nur den Wert des ersten in der Kette aktualisieren. Die einzige Möglichkeit, dies mit der normalen Daisy-Chain-Konfiguration zu tun, besteht darin, dass sich das Programm in der CPU jeden Wert in jedem 595-Chip merkt und alle Werte erneut sendet. Das johnny-five-Schieberegisterprogramm muss wahrscheinlich so etwas tun:

var first_595 = 24;
var second_595 = 10;
var third_595 = 5;
// ...
// Always send all three values, in this order:
shiftRegister.send(third_595);
shiftRegister.send(second_595);
shiftRegister.send(first_595);

Einige Leute finden es ein wenig rückständig, dass der erste Wert, den die CPU ausgibt, der Wert für den letzten 595er Chip in der Kette ist; und der letzte Wert, den die CPU ausgibt, ist der Wert für den ersten '595-Chip, der direkt mit der CPU verbunden ist.

Was kann ich sagen? So funktioniert Alberts Eisdiele.

Sie senden die gleichen seriellen Daten an beide. Tu das nicht. Verbinden Sie stattdessen den seriellen Ausgang des ersten mit dem seriellen Eingang des zweiten.

Ich habe q7 '(9-polig) mit dem Datenstift auf dem zweiten (14-polig) verbunden.
Und Sie senden zwei verschiedene Bytes hintereinander?
NEIN. Ich sende nur einen Wert. wie 24 .... bis 255 sollte der zweite nicht aktiv sein ...
Senden Sie es als ein Byte oder als zwei?
Ich weiß nicht, ich benutze Johnny Five (node.js), um das zu tun. ist wie shiftRegister.send(24);
Was versuchst du zu erreichen?

Diese Frage zeigt ein Schema zum Verbinden mehrerer 595er in Reihe oder parallel. Wenn Sie möchten, dass diese Chips in Reihe geschaltet werden, sollten Q0-Q7 nur zum ersten Chip und Q7 'vom ersten Chip zum Datenpin des zweiten Chips gehen. In Ihrem Schaltplan sind Q0-Q7 mit beiden 595-Chips verbunden.

Auf der Softwareseite müssen Sie an Bytes senden. Zuerst setzt man die Werte auf den 2. Chip in Reihe und das zweite Byte auf den 1. Chip. (Es ist, als würden Bits von Chip zu Chip weitergegeben.) Dann müssen Sie den Latch auslösen, um diese Werte auf den 595s-Ausgängen zu setzen.

Meistens ist etwas falsch angeschlossen, es gibt eine schlechte Verbindung oder noch wahrscheinlicher ein einfacher Fehler in der Software.