Forum: Mikrocontroller und Digitale Elektronik Software PWM Schieberegister


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von kurt (Gast)


Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

Ziel:

zwei unterschiedlihe Soft-PWM-Signale*  auf 12 Pins  schalten
Beispiel:

t1 = PWM1 --> Pin1  && PWM2 --> Pin 7
t2 = PWM1 --> Pin2  && PWM2 --> Pin 9

unterschiedlihe PWM-Signale*: gleiche Frequenz (100 Hz) aber 
unterschiedliche Pulsweite

BISHR:
verwendung von 12 I/OPins des Controller für die Ausgänge der Soft-PWMs.



Kennt jemand einen Schieberegister den ich zwischen 2 I/O-Leitungen und 
meinen 12 Pins setzten kann??  Damit ich nicht 12 MCU Pins verschwende 
;-)

Und wenn ja... Eine kurze Erklärung wäre gut (Prinzip des 
Schieberegisters habe ich verstanden) in bezüg auf PWM reinladen und 
dann weiterschieben??


** ich habe grad noch in einem anderen Thread gelesen:
"Nimm den 74HC595 und leg die PWM an den OE (Output Enable) Pin."

kann das auch für meinene Zwecke funktionieren?


Danke für eure hilfe

von Samuel C. (dragonsam)


Bewertung
0 lesenswert
nicht lesenswert
Ja, wenn die Pins die PWM1 und PWM2 jeweils ausgeben sollen in 
getrennten Gruppen teilbar sind und du es mit der zeitlichen Auflösungen 
nicht übertreibst sollte nichts dagegen sprechen.

Es lässt sich sogar mit einer Soft-PWM direkt im Schieberegister lösen.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
kurt schrieb:
> kann das auch für meinene Zwecke funktionieren?

Nein. Damit hättest du auf allen Kanälen die gleiche Pulsweite. Aber 
595er sind trotzden nicht verkehrt. Mit 12 Kanälen und 8 Bit Auflösung 
kommst du bei 100Hz auf einen Ausgabetakt von 12 x 256 x 100 Hz = 
307,2KHz. Da muss der Controller sich zwar ein bisschen anstrengen, 
schafft das aber. Wenn die Auflösung reduziert wird, entspannt sich das 
natürlich.

mfg.

von klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kennt jemand denn ein Schieberegister mit dem ich das gennate Vorhaben 
realisieren kann?

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Na ja. Das 595 wie meistens.

Aber so ganz ist mir noch nicht klar, was jetzt eigentlich das Problem 
ist.
Du hast also 2 Pins am µC, aus denen jeweils eine PWM rauskommt.
Soweit ist mir das klar.

Aber wie kommen da jetzt die 12 Pins ins Spiel?
Warum reicht es nicht, diese 12 Pins an jeweils den richtigen der beiden 
PWM-Pins zu schalten, mit gegebenenfalls einem Verstärker dazwischen, 
wenn der Fan-Out nicht reicht? Ganz simpel, einfach indem ein Kabel 
gezogen wird?
Oder ist diese Zuordnung der 12 Pins zu den beiden PWM Pins ebenfalls 
variabel?


Edit: allerdings wäre es dann im Falle einer variablen Zuordnung auch 
nicht ganz so einfach, wie einfach das OE vom Schieberegister 
anzusteuern.

: Bearbeitet durch Moderator
von klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Warum reicht es nicht, diese 12 Pins an jeweils den richtigen der beiden
> PWM-Pins zu schalten, mit gegebenenfalls einem Verstärker dazwischen,
> wenn der Fan-Out nicht reicht? Ganz simpel, einfach indem ein Kabel
> gezogen wird?
> Oder ist diese Zuordnung der 12 Pins zu den beiden PWM Pins ebenfalls
> variabel?

Ja... die Zuordnung ändert sich ca alle 3 min.
t1 = PWM1 --> Pin1  && PWM2 --> Pin 7
t2 = PWM1 --> Pin2  && PWM2 --> Pin 9
t3 = PWM1 --> Pin3  && PWM2 --> Pin 11
t4 = PWM1 --> Pin6  && PWM2 --> Pin 2

tx = Zeitpunkt x

Daher wollte ich ein Schieberegister nehmen.

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
klaus schrieb:
> Karl Heinz schrieb:
>> Warum reicht es nicht, diese 12 Pins an jeweils den richtigen der beiden
>> PWM-Pins zu schalten, mit gegebenenfalls einem Verstärker dazwischen,
>> wenn der Fan-Out nicht reicht? Ganz simpel, einfach indem ein Kabel
>> gezogen wird?
>> Oder ist diese Zuordnung der 12 Pins zu den beiden PWM Pins ebenfalls
>> variabel?
>
> Ja... die Zuordnung ändert sich ca alle 3 min.
> t1 = PWM1 --> Pin1  && PWM2 --> Pin 7
> t2 = PWM1 --> Pin2  && PWM2 --> Pin 9
> t3 = PWM1 --> Pin3  && PWM2 --> Pin 11
> t4 = PWM1 --> Pin6  && PWM2 --> Pin 2
>
> tx = Zeitpunkt x
>
> Daher wollte ich ein Schieberegister nehmen.

OK.
Wenns immer nur 1 Pin ist, der die PWM kriegen soll, dann geht das indem 
man den OE vom 595 an die PWM Ausgänge legt.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
klaus schrieb:
> Ja... die Zuordnung ändert sich ca alle 3 min.
> t1 = PWM1 --> Pin1  && PWM2 --> Pin 7
> t2 = PWM1 --> Pin2  && PWM2 --> Pin 9
> t3 = PWM1 --> Pin3  && PWM2 --> Pin 11
> t4 = PWM1 --> Pin6  && PWM2 --> Pin 2
>
> tx = Zeitpunkt x
>
> Daher wollte ich ein Schieberegister nehmen.

Ach so. Ich dachte, du wolltest 12 unabhängige PWM-Kanäle.

Warum nimmst du keine Multiplexer?
Schieberegister sind doch dafür nicht der Weisheit letzter Schluss.

mfg.

von klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Wenns immer nur 1 Pin ist, der die PWM kriegen soll

Ja

Karl Heinz schrieb:
> dann geht das indem
> man den OE vom 595 an die PWM Ausgänge legt.

?? kannst du das bitte erläutern?





Thomas Eckmann schrieb:
> Warum nimmst du keine Multiplexer?

Weil aus einer Anzahl von Eingangssignalen (2 PWM) eines ausgewählt und 
an den (EINEN) Ausgang durchgeschaltet werden kann. Ich sehe da im 
Moment nicht den Zusammenhang zu meinem Problem.

Bitte überzeuge mich ;-)

von Samuel C. (dragonsam)


Bewertung
0 lesenswert
nicht lesenswert
> Thomas Eckmann schrieb:
>> Warum nimmst du keine Multiplexer?
>
> Weil aus einer Anzahl von Eingangssignalen (2 PWM) eines ausgewählt und
> an den (EINEN) Ausgang durchgeschaltet werden kann. Ich sehe da im
> Moment nicht den Zusammenhang zu meinem Problem.
>
> Bitte überzeuge mich ;-)

Dann denke weiter und über Demultiplexer nach :)

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Moment
t1 = PWM1 --> Pin1 && PWM2 --> Pin 7
t2 = PWM1 --> Pin2 && PWM2 --> Pin 9
              ****
t3 = PWM1 --> Pin3 && PWM2 --> Pin 11
t4 = PWM1 --> Pin6 && PWM2 --> Pin 2
                               *****

d.h. derselbe Pin kann sowohl an PWM1 als auch an PWM2 geschaltet werden 
(natürlich nicht gleichzeitig).

Dir ist schon klar, dass du dazu 2 Ausgänge (von wo die dann auch immer 
kommen) zusammenschalten musst und du daher da Vorkehrungen treffen 
musst (beide Ausgänge zb mit einem Dioden-Or zusammenführen)

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
klaus schrieb:

>> dann geht das indem
>> man den OE vom 595 an die PWM Ausgänge legt.
>
> ?? kannst du das bitte erläutern?

Oh, nein. Nicht schon wieder.
Mir schwant etwas ...

von Samuel C. (dragonsam)


Bewertung
0 lesenswert
nicht lesenswert
Das einfachste, auch von der Hardware her, dürfte es wohl sein, wenn du 
eine Soft-PWM mit den Schieberegister-Ausgängen realisierst. Dann 
brauchst du nicht für jeden Pin zwei getrennte Signale zusammenführen.

von klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Oh, nein. Nicht schon wieder.
> Mir schwant etwas ...

... hast du dann  wenigstens eine Infoquelle...?

von klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Samuel C. schrieb:
> Dann denke weiter und über Demultiplexer nach :)

mhh okay, das werde ich.. Danke für den Tipp!

von klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Samuel C. schrieb:
> Das einfachste, auch von der Hardware her, dürfte es wohl sein, wenn du
> eine Soft-PWM mit den Schieberegister-Ausgängen realisierst. Dann
> brauchst du nicht für jeden Pin zwei getrennte Signale zusammenführen.

... ich habe aber zwei PWM-Signale gleicher Frequenz (100 Hz) aber
unterschiedliche Pulsweite...

von Samuel C. (dragonsam)


Bewertung
0 lesenswert
nicht lesenswert
Lies dir den Artikel über Soft-PWM durch. Du kannst diese direkt im 
Schieberegister realisieren, indem du es alle x µs aktualisierst.

http://www.mikrocontroller.net/articles/Soft-PWM

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
klaus schrieb:
> Karl Heinz schrieb:
>> Oh, nein. Nicht schon wieder.
>> Mir schwant etwas ...
>
> ... hast du dann  wenigstens eine Infoquelle...?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

Und rümpf nicht gleich die Nase, weil es Assembler ist.
Ich denke da ist eine ganz brauchbare Beschreibung drinn, wie ein 
595-Schieberegister funktioniert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.