PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM auch an allen Pins, geht das?



Involut
26.02.2008, 01:34
Hallo,
ich wollte mal fragen ob ich ein PWM Signal auch anderen Pins, nicht nur pind.4 und pind.5 (beim At-Mega32) ausgeben kann, es also auch an anderen Pins weiterleiten kann?

Ich bin mir nicht sicher aber es geht ja wohl nur an OC1A und OC1B.

Wenn ich es an einen anderen Pin haben will muss ich dann das PWM Signal Softwaremässig erzeugen?

Rofo88
26.02.2008, 05:32
Der Mega32 hat 4 Hardware-PWMs also kannst Du auch noch an 2 anderen Pins eine PWM bekommen( ich glaub es waren PortB.3 und PortD.7). Wenn Du aber an jedem belibigen Pin ne PWM haben willst mußt die diese in Software erzeugem.

Involut
26.02.2008, 05:46
Hi Danke für die info.

ich würde halt gerne dieses dual Motorteiber Board von Robotikhardware an einem Port betreiben und ein Pfostenstecker Flachbandkabel nehemen.

Mit port d.5 und d.7 müsste das hinkommen...

Gibt es einen Befehl (evtl. mit Timerconfig?) um an d.7 PWM zu erzeugen?

Und gibts es auch einen einfachen Befehl um software PWM zu erzeugen so dass man während das pwm Signal anliegt weitere befehle ausführen kann.

Ich kann mir das nur so vorstellen dass man einen pin schnell von 0 auf 1 umschaltet aber dann kann ich während dessen ja nichts anderes machen, oder?

T.J.
26.02.2008, 08:38
Wieso? nur beim Umschalten kannst du nix anderes machen, dazwischen schon. Das muss natürlich per interrupt geschehen ;)

Rofo88
26.02.2008, 08:48
Gibt es einen Befehl (evtl. mit Timerconfig?) um an d.7 PWM zu erzeugen?

D.7 gehört zu Timer2 also schau Dir mal "config timer2" an.


Und gibts es auch einen einfachen Befehl um software PWM zu erzeugen so dass man während das pwm Signal anliegt weitere befehle ausführen kann.

Ich kann mir das nur so vorstellen dass man einen pin schnell von 0 auf 1 umschaltet aber dann kann ich während dessen ja nichts anderes machen, oder?

Das es dazu in Bascom einen Befehl gibt währe mir neu.Wenn Du die Soft-PWM mit nem Interrupt erzeugst kann dein Programm auch noch andere Sachen machen, der Nachteil ist das deine PWM-Frequenz weniger wird.

https://www.roboternetz.de/wissen/index.php/Pwm
https://www.roboternetz.de/wissen/index.php/Bascom_und_PWM

Involut
26.02.2008, 13:05
Hi, vielen Dank!

Ich habe mak in die Hilfe geguckt und denke dass ich den timer2 so konfigurieren sollte:

Config Timer2 = Pwm , Async = On , Prescale = 128

Nur finde ich nicht wo ich den pwm Wert dan Abrufe (wie compare1a= X, bei timer0)?

Gibts da was vergleichbares?

Rofo88
26.02.2008, 13:32
Ich glaube nicht das Async=on sein soll den warum sollte der Timer2 asynchron zum Prozessortakt laufen.

compare1a ist für Timer1...also sollte compare2 für Timer2 sein

stefan_Z
26.02.2008, 14:18
Schau hier mal im Forum, das Thema hatten wir schon. Die verschiedenen Timer haben verschiedene Registernamen, teilweise auch zwei Register, wenn mehr als 8 Bit. Die Namen findest du im Datenblatt, Bascom kann die auch nutzen, teilweise siehts aber im Code-Editor nicht richtig aus (wird nicht gefärbt).

python_rocks
26.02.2008, 14:42
Vielleicht PWM2 PWM2A PWM2B...

stefan_Z
26.02.2008, 23:23
Ja nee, das is bei allen Chips anders. Je nach Bit-Zahl, Zusatzfunktionen usw.
Man findet die Namen hinten im Datenblatt nahe denen die man schon kennt.

Beim Mega8 wären das z.B.:
Ocr2 / Ocr1al / Ocr1bl

Involut
27.02.2008, 01:11
Also Danke für die Hilfe aber ich gebs auf.
Ich werde wohl OC1A und OC1B nehemn und dann ein Kabel so umlöten damit es geht.
Pin d.0 und d.1 sind schon für den Uart reserviert und den will ja auch nutzen.
Und wen nich PWN an D.5 und D.7 gleichzeitig machen (Compare2 war wohl richtig auch wenn in Bascom nicht Fett gedruckt wird, komische Sache), dann sind die PWM signale trotz der gleichen Zahl die dem Compare zugeordnet wird Zeitlich versetzt.

Also nochmal Danke für die Hilfe , aber ich werde dann wohl wie gesagt löten (müssen) um das Prob zu lösen.