Forum: Mikrocontroller und Digitale Elektronik Mehrere Schieberegister kaskadieren, Länge?


von Anfänger (Gast)


Lesenswert?

Hallo,

ich möchte mehrere Schieberegister kaskadieren, sie aber etwa 1 Meter 
auseinander setzen. Ist das möglich oder werden die Leitungen dann zu 
lang?

Vielen Dank

von Johannes O. (jojo_2)


Lesenswert?

Welche Schieberegister und welche Frequenzen benutzt du? Wenn du die 
Daten mit ein paar kHz reinschieben willst ists kein Problem. Wenn du 
die 25MHz (oder wieviel bei diesem möglich sind) voll ausnutzen willst, 
dann wirds interessant!

von oszi40 (Gast)


Lesenswert?

> oder werden die Leitungen dann zu lang?
Kommt darauf an. Jede Leitung ist auch eine Antenne... Sie kann jede 
Menge STörungen einsammeln oder abstrahlen ...

von Anfänger (Gast)


Lesenswert?

Als Schieberegister benutz ich 74HC595, davon 4 Stück.

Frequenz is schwierig. Wär natürlich schön, wenn ich wie bei PWM alle 
dimmen könnte, aber ich denk, dass is so nicht machbar. Zumal der µC nur 
mit 20MHz getaktet ist und ich so nur ~10MHz schaffen würde. Ansonsten 
eine geringe Frequenz würds schon tun. Ich denk mal 25 mal pro Sekunde 
updaten wär wünschenswert.

von Roland P. (pram)


Lesenswert?

25 Updates pro sekunde X 4 Schieberegister X 8 Bit = 800 Hz Clock. 
Sollte locker machbar sein (PWM geht damit natürlich nicht)
Damit langweilt sich der uc, evtl brauchst du bei den Ausgängen sogar 
eine RC-Kombination, welche die Slew-Rate dämpft, damit in den Leitungen 
keine Reflexionen durch zu schnelle Umschaltvorgänge auftreten.

Ein Problem könnte aber die Spannungsversorgung sein. 
(Masseverschiebung)

Gruß
Roland

von Anfänger (Gast)


Lesenswert?

Hm. Meine Alternative wär die Leitungen zwischen Ausgang und LED länger 
zu machen, aber ich denk mal, dass ist ähnlich schlecht?

Und wegen PWM: Wenn ich das richtig versteh, muss man für PWM Frequenzen 
von 1-9kHz schaffen. Das wär dann ja einen Clock-Rate von 32kHz bis 
2,8MHz?

von Marcus (Gast)


Lesenswert?

Anfänger schrieb:
> Und wegen PWM:


Was willst du mit der PWM bei Schieberegistern ... das erschliesst sich 
mir nicht wirklich.

Wenn du die PWM zum Takten nehmen willst,Viel Spass beim Synchronisieren 
(Vor allem bei deinen MHZen), wenn du das nicht machst schiebst du 
munter Müll durch die Register.
Du weisst hoffentlich schon das du das Bit bei jeder Taktveränderung um 
eine "Zelle" weiterschiebst ?

Normalerweise würde man einen Output-Pin als "Clock" definieren,und 
diesen "Zielgerichtet" schalten und nicht sinnlos ...

So alles in allem recht "ungewöhnlich" was du schreibst.

Marcus

von Johannes O. (jojo_2)


Lesenswert?

Wenn du HC595 verwendest, dann nimm doch einfach den OE (Output Enable) 
Pin fürs PWM. Der setzt dir alle Ausgänge auf Tristate. Evtl. brauchst 
du also noch Pulldowns.
Die OE aller Schieberegister kannst du parallel schalten, das hab ich 
auch schon gemacht.

von der da ist (Gast)


Lesenswert?

Marcus schrieb:
> Anfänger schrieb:
>> Und wegen PWM:
>
>
> Was willst du mit der PWM bei Schieberegistern ... das erschliesst sich
> mir nicht wirklich.
>
> Wenn du die PWM zum Takten nehmen willst,Viel Spass beim Synchronisieren
> (Vor allem bei deinen MHZen), wenn du das nicht machst schiebst du
> munter Müll durch die Register.
> Du weisst hoffentlich schon das du das Bit bei jeder Taktveränderung um
> eine "Zelle" weiterschiebst ?
>
> Normalerweise würde man einen Output-Pin als "Clock" definieren,und
> diesen "Zielgerichtet" schalten und nicht sinnlos ...
>
> So alles in allem recht "ungewöhnlich" was du schreibst.
>
> Marcus

...ich würde mal aus seiner sehr dünnen beschreibung den sinn 
entnehmen,das er mit jeden ausgang des schieberegisters einen 
unabhängigen pwm ausgang realisieren möchte?!
in dem fall müsste schon recht flott "geschoben" werden ;-)

grüsse ddi

von Sam .. (sam1994)


Lesenswert?

Die Geschwindigkeit wird selbst mit PWM kein Problem sein:
1
100Hz * 32bit * 256 = 800 Kbps

Schwieriger wird die Software-PWM Generierung. Eine vorsortierte Tabelle 
der PWM-Werte wird zwingend nötig sein. Wahrscheinlich wird ziemlich 
schwer ohne Assembleroptimierungen. siehe Soft-PWM

von Anfänger (Gast)


Lesenswert?

der da ist schrieb:
> ...ich würde mal aus seiner sehr dünnen beschreibung den sinn
> entnehmen,das er mit jeden ausgang des schieberegisters einen
> unabhängigen pwm ausgang realisieren möchte?!

genau, indem ich einfach schnell genug hintereinander update.

Samuel K. schrieb:
> Die Geschwindigkeit wird selbst mit PWM kein Problem sein

oh, doch nur 100Hz. Im Artikel zu Pulsweitenmodulation stand was von 
1-9kHz, in dem zu Soft-PWM auch nur 100Hz.

Samuel K. schrieb:
> Wahrscheinlich wird ziemlich
> schwer ohne Assembleroptimierungen.

Assembler ist kein Problem. Allerdings sollte die Implementierung meinen 
µC wirklich so auslasten, muss ich mir Gedanken machen, den Teil mit den 
LEDs in einen seperaten auszulagern, da das nicht die einzige Aufgabe 
des µCs ist.

von Hannes L. (hannes)


Lesenswert?

Anfänger schrieb:
> muss ich mir Gedanken machen, den Teil mit den
> LEDs in einen seperaten auszulagern,

Oder besser in mehrere separate AVRs auslagern und dafür auf die 
PWM-feindlichen Schieberegister verzichten. Die Daten (PWM-Wert und 
Änderungstempo je LED-Kanal) schickst Du dann per UART oder SPI.

...

von m.n. (Gast)


Lesenswert?

http://www.mino-elektronik.de/AVR_PWM_64/AVR_PWM_64.htm
Vielleicht hilft das hier.
Wichtig ist, die Signale über geschirmte Leitungen zu führen u.U. mit 
Abschlußwiderstand. Werden die Leitungen länger, müssen sie per 
Schmitt-Trigger aufbereitet werden. Bei noch längeren Leitungen sollten 
Treiber an den Ausgängen und schnelle Optokoppler an den Eingängen 
genommen werden. Nur so bleiben die Signale von den Versorgungsleitungen 
(GND, V+) entkoppelt.

Oder man sieht die Sache ganz gelassen und vertraut darauf, dass 
einzelene Aussetzer bei der nächsten Übertragung wieder korrigiert sind, 
wenn nur Lämpchen angesteuert werden. Geschirmtes Kabel sollte dennoch 
verwendet werden.

von Sam .. (sam1994)


Lesenswert?

Anfänger schrieb:
> Assembler ist kein Problem. Allerdings sollte die Implementierung meinen
> µC wirklich so auslasten, muss ich mir Gedanken machen, den Teil mit den
> LEDs in einen seperaten auszulagern, da das nicht die einzige Aufgabe
> des µCs ist.

Assembler braucht man doch nicht, das geht mit der Soft-PWM Routine ohne 
Probleme. Denn die Refreshrate liegt nur bei 25,6KHz, d.h. es bleiben 
800 Takte bis zum nächsten Refresh @20Mhz. 800Kbps ist nur der SPI Takt.

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Also ich hab die Wordclock nachgebaut, und zu Übungszwecken mal die 
Software selbst geschrieben, und ich habe auch über Schieberegister eine 
PWM realisiert, sozusagen beim Wechsel von "Fünf nach zwölf" zu "zehn 
nach zwölf" fadet die "Fünf" langsam aus, und gleichzeitig fadet die 
"zehn" langsam ein, ist doch gar kein Problem. Du nimmst einen Timer, 
stellst den so ein, das er in der 256-fachem der PWM Frequenz einen 
Interrupt bringt, in der Routine schaltest du bei Zählerstand null alle 
Ausgänge auf logisch eins, indem du einfach ein 4 Register alles auf 
0xff setzt, und dann mit dem Code aus dem Tutorial in die 
SChieberegister schieben, und dann den Output Enable Puls geben, ist 
alles im tutorial über SChieberegister beschrieben. Und dann vergleichst 
du bei jedem nächsten Interrupt den Zählerstand mit deinem PWM-Wert, und 
falls einer überein stimmt, setzt du in deinen 4 registern das 
entsprechende Bit auf logisch null. und zum ende der Routine schiebst du 
wieder die 4 Register in die Schieberegister, und dann den Enable-Puls 
dran, und gut ist. DAzu brauchst du keinen extra AVR, es sei denn, du 
willst es recht kompliziert gestalten, was deine PWM-Soll_Werte 
anbetrifft, aber die eigentliche PWM ist ganz easy, und die schafft der 
AVR auch mit 1Mhz.


MfG dennis

von Jens G. (jensig)


Lesenswert?

Also die Taktfrequenz alleine ist nicht so sehr ausschlaggebend. Sondern 
eher die Taktflanken. Die HC-Serie ist zwar nicht superschnell, aber 
immerhin könnte die schon auf 10 oder 20ns Impulse reagieren. Also auch 
auf Reflexionen auf der Leitung in diesem Bereich. Bei 1m sind's wohl so 
um die 5ns Laufzeit, da würde die Reflexion also nach 15ns wieder 
eintreffen, und dein Schieberegister nochmal anschubsen, wenn stark 
genug. Könnte also schiefgehen. Ich würde hier also schon mit angepaßten 
und richtig abgeschlossenen Strippen anfangen. Also z.B. verdrillte 
Leitung (Signal/Masse), die vielleicht Z=150Ohm hat (einfach mal 
angenommen), sollte dann mit 150Ohm abgeschlossen sein (die Treiberseite 
ist nicht so wichtig bezüglich Anpassung).
Oder aber vielleicht einfach einen R in Reihe, um die Flanken zu 
verschleifen (solange die Mindestflankensteilheit der HC-Serie 
eingehalten wird).
Kannst doch mal einen Oszi nach einer 1m HC-gespeister Leitung 
anschließen ohne Parallel-R, um zu sehen, wie da die Flanken aussehen.

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
Noch kein Account? Hier anmelden.