Mehrere Schieberegister kaskadieren, Länge?

#2468484
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!
Gast #2468501
> 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 ...
Gast #2468503
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.
#2468533
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
Gast #2468555
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?
Gast #2468789
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
Gast #2469164
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
#2469183
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
Gast #2470256
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.
Gast #2470404
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.
#2470548
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.
#2470906
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
#2471287
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.