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
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)
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
>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?
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.
>Du moechtest einem Polyphasenwandler bauen.
Ich weiß selbst, was ich möchte. Fremdwörter ohne Ahnung helfen keinem
weiter.
Super... Da melden sich welche mit meinem Namen an. Jungs, nehmt die nicht ernst!!! Ralf (Topic-Starter)
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)
.. 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
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.
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
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.
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.