Sieh Dir mal AT90PWM3 an der hat 10(!) Hardware-PWM-Kanäle. Also wirklich eine präzise und bequeme Sache.
Naja, wenn man Software-PWM macht, kommt drauf an wie man es macht. Benutzt man Timer, ist man durch deren Anzahl auch wieder beschränkt. Habe Deinen Code noch nicht genau angesehen. Benutzt Du Timer-Interrupts?
Nein, ich lasse den code einfach immer durchlaufen. Für UART anfragen etc benutze ich interrupts, die zeit die das in anspruch nimmt, wird dann aber wieder abgezogen, damit nicht ein zu langer pwm tackt entsteht. Ziemlich mühsam alles manuell gebastelt.
lg binaer
Alkohol ist des Menschen grösster Feind!
Doch in der Bibel steht geschrieben, du sollst auf deine Feinde lieben!
Ach so. Cool. Und wie misst Du die Zeit, die für evtl UART-Bearbeitung verbraucht wurde? Oder ziehst Du einfach einen Erfahrungswert ab?
Das kann man ja genau vorherbestimmen... die Tackte, die die einzelnen Befehle bei der routine brauchen aufsummieren.
lg binaer
Alkohol ist des Menschen grösster Feind!
Doch in der Bibel steht geschrieben, du sollst auf deine Feinde lieben!
Bei den Interrupts gibts immer zwei möglichkeiten, entweder interrupt oder warteschleife, die genau gleich viel zeit verschlingt, so kommt es nicht drauf an. Bei den pwm generatoren wird auch immer x zeit verschlungen, dann wird geschaltet und dann nochmals y - x zeiit verschlungen. y konstant.
lg binaer
Alkohol ist des Menschen grösster Feind!
Doch in der Bibel steht geschrieben, du sollst auf deine Feinde lieben!
Meinst Du mit "PWM Generatoren" Hardware-PWMs? Die laufen ja total außerhalb des eigentlichen CPU-Cores, und verbrauchen somit keine Zeit. Du schreibst einfach x und y an der dafür vorgesehenen Adresse und die CPU bearbeitet sofort den nächsten Befehl. An dem betreffenden Pin wird dann die PWM ausgegeben. Solange Du nicht die Werte in den PWM-Registern überschreibst, bleibt der eingestellte duty cycle erhalten und die CPU kann ganz entpannt was anderes machen. Wie viele PWMs gibst Du im Moment eigentlich aus?
Ich meine damit natürlich meine software "pwm generatoren"...
ich werde beim nächsten projekt wo ich Servos brauche (fast jedes projekt) mal diese hardware pwm generatoren ausprobieren.
ich gebe im moment 5 voneinander unabhängige PWM signale aus. für jede achse ein
lg binaer
Alkohol ist des Menschen grösster Feind!
Doch in der Bibel steht geschrieben, du sollst auf deine Feinde lieben!
Dann wirds mit Hardware-PWM von der Anzahl her natürlich knapp, wenn Du 5 Achsen steuern willst. Die meisten gängigen AVRs haben 2 oder 3 Hardware-PWM-Kanäle. Das Problem "zu wenig PWMs" habe ich auch oft. Ich werde im Laufe der nächsten Monate, wenn ich Zeit hab, mal versuchen das ganze mit einem CPLD zu lösen, wo man dann gemütlich 20 richtig schnelle und präzise Hardware-PWMs hat, und der Controller nur noch die Änderungen über SPI oder I²C rausschickt., und das ganze Umschalten und Zählen wird im CPLD erledigt wird. Aber das ist noch Zukunftsmusik. Ich habe gesehen, dass du einen 8515 verwendest, der hat ja immerhin 3 Hardware-PWM-Kanäle.
Ja, aber 3 bringen mir nichtswenn ich 2 softwaremässig machen muss, kann ich gleich alle so machen
Ja CPLD ist sicher net übel, aber ich denke das dürfte noch eine Herausforderung werden. Naja mit VHDL geht es noch, aber ich hab solches Zeug mal versucht durch logikschaltpläne zu basteln, das ist das perfekte chaos
Haltest mich über das Projekt auf dem laufenden
lg binaer
Alkohol ist des Menschen grösster Feind!
Doch in der Bibel steht geschrieben, du sollst auf deine Feinde lieben!
Lesezeichen