Hallo Zusammen, Ich habe einen board mit resistiver Last, die Auf mehrere Widerstaende verteilt ist. Jeder Widerstandslast ist mit einem power MOSFET an oder ausgeschaltet. Das Muster für das an und ausschalten möchte ich mit SPI zu einem Shieberegister schicken und dann am Ausgang ausgeben. Mein Ziel ist es mehrere Shieberegister zu kaskadieren, sie aber individuell auszugeben. Ich habe diesen Artikel gefunden für die Schaltung der Schieberegister: http://rn-wissen.de/wiki/index.php/Portexpander_am_AVR#Schaltplan nur diese Schaltung schaltet gleich den Ausgang nach dem die Werte geladen worden sind, indem der chip select Signal of hoch gestellt wird. Meine Frage: Kann ich einfach total auf das CS Signal verzichten? und nur das clock und den Data signal benutzen? Für das Latchen werde ich einen anderen unabhängigen PIN signal benutzen , damit ich den Ausgang nach meinem Willen einschalten kann. Der Schieberegister braucht ja eh an sich nur den Clock zum Shieben, oder? Das CS wird von der Software Seite natürlich "existieren" Was denkt ihr? Ich habe ein Foto hinzugefügt um ein bisschen mein Vorhaben zu verdeutlichen. Edit: ====================================================================== Vielleicht noch zur Erklärung, warum ich das machen möchte: Die verschiedenen Schieberegister sitzen auf unterschiedliche Boards. Außer der Signal Sende Kontrolle gibt es auch ein Timer control. Die Werte von den Schieberegister werden an deren entsprechenden boards an verschiedenen Zeiten durchgeschaltet. Daher brauche ich die unterschiedlichen Latch Signale. Ausserdem möchte ich nicht direct nach dem Senden die Werte durchschalten, was ja der Fall mit chip select ist. Daher denke ich mir im normal Fall braucht ja ein Schieberegister zum schieben nur die CLock und die data und zum Latchen nur das Latch signal. Also könnte ich ich die Clock and die Data dem SPI entziehen und mein latch signal selber hinzufügen. würde es so Sin machen? ======================================================================== = danke!!
:
Bearbeitet durch User
@Nesrine Ghajati (nesrine_g920) >zu einem Shieberegister schicken und dann am Ausgang ausgeben. Mein Ziel >ist es mehrere Shieberegister zu kaskadieren, sie aber individuell >auszugeben. Das ist der Normalfall. >nur diese Schaltung schaltet gleich den Ausgang nach dem die Werte >geladen worden sind, indem der chip select Signal of hoch gestellt wird. Das ist der Sinn der Sache. >Meine Frage: Kann ich einfach total auf das CS Signal verzichten? Nein. > und >nur das clock und den Data signal benutzen? Für das Latchen werde ich >einen anderen unabhängigen PIN signal benutzen , damit ich den Ausgang >nach meinem Willen einschalten kann. Man braucht nicht mehrere Chip Select Signale für die einzelnen Schieberegister, ein gemeinsames ist ausreichend und logisch besser. >an sich nur den Clock zum Shieben, oder? Das CS wird von der Software >Seite natürlich "existieren" Wo ist dann das Problem? >Was denkt ihr? Du denkst zu kompliziert. In deiner Software gibt es ein Array, welches alle Daten aller Schieberegister enthält. Willst du nun nur ein einzelnes Bit ändern, tust du das mittels Bitmanipulation in diesem Array und schreibst ALLE Daten erneut auf die Schieberegister incl. Chip Select. Dann ändert sich nur dieses eine Bit an den Ausgängen, alle anderen werden mit dem gleichen Wert wie zuvor geladen. So kann man jedes beliebige Bit einzeln ansteuern.
Vielleicht noch zur Erklärung, warum ich das machen möchte: Die verschiedenen Schieberegister sitzen auf unterschiedliche Boards. Außer der Signal Sende Kontrolle gibt es auch ein Timer control. Die Werte von den Schieberegister werden an deren entsprechenden boards an verschiedenen Zeiten durchgeschaltet. Daher brauche ich die unterschiedlichen Latch Signale. Ausserdem möchte ich nicht direct nach dem Senden die Werte durchschalten, was ja der Fall mit chip select ist. Daher denke ich mir im normal Fall braucht ja ein Schieberegister zum schieben nur die CLock und die data und zum Latchen nur das Latch signal. Also könnte ich ich die Clock and die Data dem SPI entziehen und mein latch signal selber hinzufügen. würde es so Sin machen? Danke
@Nesrine Ghajati (nesrine_g920) >Die verschiedenen Schieberegister sitzen auf unterschiedliche Boards. Und sind dennoch nacheinenander verschaltet? Das klingt nach einem ungünstigen Konzept. >Außer der Signal Sende Kontrolle gibt es auch ein Timer control. Die >Werte von den Schieberegister werden an deren entsprechenden boards an >verschiedenen Zeiten durchgeschaltet. In welchem Bereich liegen diese Zeiten? Mikrosekunden, Millisekunden oder größer? > Daher brauche ich die >unterschiedlichen Latch Signale. Nicht zwangsläufig. > Ausserdem möchte ich nicht direct nach >dem Senden die Werte durchschalten, Hmmm. Mit diesem Misch/Masch kommst du aber ziemlich schnell in andere Probleme, denn du kannst die jeweils anderen Schieberegister nicht laden, ohne die vorherigen/nachfolgenden zu beeinflußen. Dein Gesamtkonzept ist fragwürdig. Entweder macht man es so wie von mir oben beschrieben, das geht auch mit verschiedenen Ausgabezeiten für die einzelnen Register. Oder man trennt die Register komplett auf und klemmt die seriellen Eingänge alle parallel an MOSI und verpasst jedem Schieberegister ein eigenes chip select Signal. Dann ist jedes Schieberegister ein unabhängiger SPI-Slave. Allerdings braucht man dann für das einfach 74HC595 noch ein Logikgatter, welches den Schiebetakt deaktiviert, wenn Chip Select nicht aktiv ist. Und da du das Einschieben neuer Daten vom Speichern und Ausgeben trennen willst, brauchst du sogar ZWEI Chip Selects pro Schieberegister! Ein zur Eintakten neur Daten und eins zur Übernahme! Du siehst, das 2. Konzept ist noch aufwändiger. >Daher denke ich mir im normal Fall braucht ja ein Schieberegister zum >schieben nur die CLock und die data und zum Latchen nur das Latch >signal. Also könnte ich ich die Clock and die Data dem SPI entziehen und >ein latch signal selber hinzufügen. Das wird alles chaotisch. K.I.S.S.!!! https://de.wikipedia.org/wiki/KISS-Prinzip >würde es so Sin machen? Nein.
Falk B. schrieb: > @Nesrine Ghajati (nesrine_g920) > >>Die verschiedenen Schieberegister sitzen auf unterschiedliche Boards. > > Und sind dennoch nacheinenander verschaltet? Das klingt nach einem > ungünstigen Konzept. nicht so ganz , die boards werden alle Arduino Shields sein und werden aufeinander gestapelt werden. Ich koennte die pins so waehlen, dass sie kaskadiert sind. > >>Außer der Signal Sende Kontrolle gibt es auch ein Timer control. Die >>Werte von den Schieberegister werden an deren entsprechenden boards an >>verschiedenen Zeiten durchgeschaltet. > > In welchem Bereich liegen diese Zeiten? Mikrosekunden, Millisekunden > oder größer? Also jetzt liegen die im Millisekunden Bereich, in der Zukunft aber soll auch für viel kleinere zeitbereiche passen, also im Mikro. > >> Daher brauche ich die >>unterschiedlichen Latch Signale. > > Nicht zwangsläufig. > >> Ausserdem möchte ich nicht direct nach >>dem Senden die Werte durchschalten, > > Hmmm. Mit diesem Misch/Masch kommst du aber ziemlich schnell in andere > Probleme, denn du kannst die jeweils anderen Schieberegister nicht > laden, ohne die vorherigen/nachfolgenden zu beeinflußen. Dein > Gesamtkonzept ist fragwürdig. Das Wichtige indem Fall sind die Werte am Ausgang und die werden mit dem Senden der neuen Werte nicht beinfluesst, solange ich den entsprechenden Shieberegister nicht latche. oder? > > Entweder macht man es so wie von mir oben beschrieben, das geht auch mit > verschiedenen Ausgabezeiten für die einzelnen Register. Könntest du bitte deine Methode mehr erklären, hab nicht so richtig verstanden. > > Oder man trennt die Register komplett auf und klemmt die seriellen > Eingänge > alle parallel an MOSI und verpasst jedem Schieberegister ein eigenes > chip select Signal. Dann ist jedes Schieberegister ein unabhängiger > SPI-Slave. Allerdings braucht man dann für das einfach 74HC595 noch ein > Logikgatter, welches den Schiebetakt deaktiviert, wenn Chip Select nicht > aktiv ist. Und da du das Einschieben neuer Daten vom Speichern und > Ausgeben trennen willst, brauchst du sogar ZWEI Chip Selects pro > Schieberegister! Ein zur Eintakten neur Daten und eins zur Übernahme! > Du meinst jetzt ein Logikgatter zum multiplexen der Clock? ob ich jetzt ein Chip select signal oder einen von mir definierten signal nehme (für das latchen) , würde es einen großen Unterschied machen? > Du siehst, das 2. Konzept ist noch aufwändiger. > >>Daher denke ich mir im normal Fall braucht ja ein Schieberegister zum >>schieben nur die CLock und die data und zum Latchen nur das Latch >>signal. Also könnte ich ich die Clock and die Data dem SPI entziehen und >>ein latch signal selber hinzufügen. > > Das wird alles chaotisch. das war nur weiteres Erklaeren von meiner Denkweise:) > > K.I.S.S.!!! > > https://de.wikipedia.org/wiki/KISS-Prinzip > >>würde es so Sin machen? > > Nein. ok ich versteh es ist nicht die eleganteste Lösung...bei weitem. Aber zumindest bei der Methode (falls ich das zweite Konzept nehme) brauche ich kein extra Gatter. aber das gatter is dedinitiv die bessere Lösung. Wie oben gefragt, koenntest du mir deine Methode mit dem Array näher erkären ( mit for dummies Weise):) Danke für die zeit!!
@Nesrine Ghajati (nesrine_g920) >nicht so ganz , die boards werden alle Arduino Shields sein und werden >aufeinander gestapelt werden. Ich koennte die pins so waehlen, dass sie >kaskadiert sind. Hmmm, gerade da ist eine Kaskadierung eher fragwürdig. >> In welchem Bereich liegen diese Zeiten? Mikrosekunden, Millisekunden >> oder größer? >Also jetzt liegen die im Millisekunden Bereich, in der Zukunft aber soll >auch für viel kleinere zeitbereiche passen, also im Mikro. Ganz schön schnell. Was willst du denn damit machen? >Das Wichtige indem Fall sind die Werte am Ausgang und die werden mit dem >Senden der neuen Werte nicht beinfluesst, solange ich den entsprechenden >Shieberegister nicht latche. oder? Ja. >> Entweder macht man es so wie von mir oben beschrieben, das geht auch mit >> verschiedenen Ausgabezeiten für die einzelnen Register. >Könntest du bitte deine Methode mehr erklären, hab nicht so richtig >verstanden. Steht doch alles oben. Die kaskadierten Schieberegister werden als ein einziges Register mit nur einem Chip Select behandelt. >Du meinst jetzt ein Logikgatter zum multiplexen der Clock? Ja. Und es heißt der Takt 8-0 >ob ich jetzt ein Chip select signal oder einen von mir definierten >signal nehme (für das latchen) , würde es einen großen Unterschied >machen? ??? Du brauchst auf jeden Fall 2 Signale pro Schieberegister. >ok ich versteh es ist nicht die eleganteste Lösung...bei weitem. Aber >zumindest bei der Methode (falls ich das zweite Konzept nehme) brauche >ich kein extra Gatter. Doch. Extra Gatter UND je zwei Steuersignale, eins als chip select, eins zum Speichern (latch) >Wie oben gefragt, koenntest du mir deine Methode mit dem Array näher >erkären ( mit for dummies Weise):) Hmmm, viel mehr gibt es dazu nicht zu sagen. Man lädt immer alle Daten aller Register und übernimmt die am Ende der Übertragung durch die steigende Flanke vom Chip Select Signal.
Hallo nochmal: ich habe diesen thread gefunden, das ungefaehr auch mein Problem shildert. Beitrag "2 Schieberegister am selben SPI Bus" Sonst für das MUX für den CLK, brauche ich nicht eher die andere Richtung? also DEMUX? Da ich schon meine Platine für den µC habe (XMC4700 Relaxkit von Infineon) , brauche ich wahrscheinlich eine extra platine für den MUX oder? ich kann doch nicht bei jedem Board einen DEMUX am Eingang stellen oder? (hoffe das ist das Ende:) Danke! Falk B. schrieb: > @Nesrine Ghajati (nesrine_g920) > >>nicht so ganz , die boards werden alle Arduino Shields sein und werden >>aufeinander gestapelt werden. Ich koennte die pins so waehlen, dass sie >>kaskadiert sind. > > Hmmm, gerade da ist eine Kaskadierung eher fragwürdig. > >>> In welchem Bereich liegen diese Zeiten? Mikrosekunden, Millisekunden >>> oder größer? > >>Also jetzt liegen die im Millisekunden Bereich, in der Zukunft aber soll >>auch für viel kleinere zeitbereiche passen, also im Mikro. > > Ganz schön schnell. Was willst du denn damit machen? > >>Das Wichtige indem Fall sind die Werte am Ausgang und die werden mit dem >>Senden der neuen Werte nicht beinfluesst, solange ich den entsprechenden >>Shieberegister nicht latche. oder? > > Ja. > >>> Entweder macht man es so wie von mir oben beschrieben, das geht auch mit >>> verschiedenen Ausgabezeiten für die einzelnen Register. > >>Könntest du bitte deine Methode mehr erklären, hab nicht so richtig >>verstanden. > > Steht doch alles oben. Die kaskadierten Schieberegister werden als ein > einziges Register mit nur einem Chip Select behandelt. > >>Du meinst jetzt ein Logikgatter zum multiplexen der Clock? > > Ja. Und es heißt der Takt 8-0 > >>ob ich jetzt ein Chip select signal oder einen von mir definierten >>signal nehme (für das latchen) , würde es einen großen Unterschied >>machen? > > ??? > Du brauchst auf jeden Fall 2 Signale pro Schieberegister. > >>ok ich versteh es ist nicht die eleganteste Lösung...bei weitem. Aber >>zumindest bei der Methode (falls ich das zweite Konzept nehme) brauche >>ich kein extra Gatter. > > Doch. Extra Gatter UND je zwei Steuersignale, eins als chip select, eins > zum Speichern (latch) > >>Wie oben gefragt, koenntest du mir deine Methode mit dem Array näher >>erkären ( mit for dummies Weise):) > > Hmmm, viel mehr gibt es dazu nicht zu sagen. Man lädt immer alle Daten > aller Register und übernimmt die am Ende der Übertragung durch die > steigende Flanke vom Chip Select Signal.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.