mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM zeitversetzt ansteuern


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich brauch hier mal Hilfe, um den richtigen Denkanstoß zu finden.

Ich hab eine Software-PWM mit acht Kanälen. Die PWM-Werte stammen aus 
einer Wertetabelle. Jede Zeile der Tabelle möchte ich einmal vorwärts 
und rückwärts durchlaufen, danach die nächste Zeile, usw. bis zum 
Tabellenende.
Die PWM-Kanäle sollen zeitversetzt angesteuert werden (alle mit der 
gleichen Zeit und die Dauer bis zum nächsten Wertesprung ist ebenfalls 
identisch).
Wie kann ich das nun am besten realisieren? Alles was ich mir an PAPs, 
Notizen, etc. zusammengestellt hab, will nicht so recht fruchten, ich 
komm schon auf dem Papier nicht zu einer Lösung :(
Es hat eigentlich nur bis dahin gereicht, dass ich mit einer 
State-Machine für jeden Kanal arbeiten muss (denke ich) bzw. mit einer 
State-Machine und jeder Kanal hat eine eigene State-Variable sowie 
Indizes für die Tabellenposition.

Kann mir jemand n Schubs in die richtige Richtung geben?

Ralf

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So richtig versteh ich noch nicht, wo da jetzt das Problem liegt. Für 
jeden Kanal ein eigener Index, welches der nächste Tabelleneintrag ist. 
Und bei der Weiterschaltung wird halt jeder Kanal extra behandelt und 
unabhängig von allen andern weitergeschaltet.

Oder denke ich da jetzt zu einfach? Zu naiv?
(Kann schon sein. Denn im Moment hab ich das Gefühl die Fragestellung 
nicht verstanden zu haben)

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl Heinz,

> So richtig versteh ich noch nicht, wo da jetzt das Problem liegt.
In der Komplexität :) Zumindest sieht jeder Ansatz den ich bis jetzt 
hatte nach kurzer Zeit sehr komplex aus.

> Für jeden Kanal ein eigener Index, welches der nächste Tabelleneintrag ist.
> Und bei der Weiterschaltung wird halt jeder Kanal extra behandelt und
> unabhängig von allen andern weitergeschaltet.
Ja, so in der Art dachte ich das auch. Und wie stellst du jetzt den 
Zeitversatz der Kanäle zueinander her? Das bedeutet zwangsläufig, jeder 
Kanal muss mindestens den Zustand/Index des vorhergehenden Kanals 
kennen.

> Oder denke ich da jetzt zu einfach? Zu naiv?
> (Kann schon sein. Denn im Moment hab ich das Gefühl die Fragestellung
> nicht verstanden zu haben)
Kann sein, macht ja nix :)
Die Frage ist einfach, wie man das am einfachsten realisiert. 
State-Machine, etc.

Ralf

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Denn im Moment hab ich das Gefühl die Fragestellung
>nicht verstanden zu haben

Wie wärs, wenn du dann einfach mal einen Thread NICHT verunstaltest?

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du moechtest einem Polyphasenwandler bauen. Alle PWM haben dieselbe 
Frequenz. Der erste kanal startet bei phase=0, der Zweite bei Phase= 45, 
der Dritte bei Phase = 90, ... und jeder Kanal hat die Pulsbreite, die 
er eben hat. Ja. Falls die Hardware das unterstuetzt ... sonst muss die 
Software ran. Per software ... man laesst einen Timer laufen der einer 
achtel frequenzperiode entspricht und laedt jdes mal den naechsten PWM.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Du moechtest einem Polyphasenwandler bauen.

Ich weiß selbst, was ich möchte. Fremdwörter ohne Ahnung helfen keinem 
weiter.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super... Da melden sich welche mit meinem Namen an. Jungs, nehmt die 
nicht ernst!!!

Ralf (Topic-Starter)

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jungs, nehmt auch mich nicht ernst!!! Ich bin zu blöd, mich anzumelden 
und beschwere mich, dass andere sich auch nicht anmelden!!!

Ralf (Topic-Ender)

Autor: Klaus De lisson (kolisson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. Hm
wenn doch deine Wertetabelle in einem Array steht kannst du doch
für kanal 1 den wert mit index i nehmen. für Kanal 2 dann z.B Index i+2
oder so.

Gruss

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was spricht denn gegen Index i+1? Ich habe ja nicht beliebig viele 
Kanäle, so dass ich nicht jeden 2. auslassen kann.
Dein Vorschlag leuchtet mir nicht ganz ein.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh man, hoffentlich ist der Schnarchzapfen bald im Bett...

@Klaus De lisson:
Ich antworte morgen drauf, das wird mir mit dem Spassvogel grad zu 
blöd...

Ralf

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin ja so ein Schnarchzapfen. Ich komme doch gerade erst aus dem 
Bett. Können wir mein Problem jetzt bitte weiter diskutieren? Ich bin 
leider nicht so helle, dass ich selbst voran käme.

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.