-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Phasenkorrekte PWM mit Hochbefehlen

  1. #1
    Murus
    Gast

    Phasenkorrekte PWM mit Hochbefehlen

    Anzeige

    Hallo zusammen,

    in meinem Buch wird die Erzeugung einer Phasenkorrekten PWM nur per Register-Anweisungen gezeigt. (Mit Timer1 Auf PB1)

    Gibts dafür auch Bascom-Hochbefehle? Ich komm net so ganz draus, wo man die Zählwerte setzt etc.

    Herzliche Grüsse
    Mario

  2. #2
    Murus
    Gast
    Also, hab mal etwas im Datenblatt gewühlt. Der Timer1 hat im PWM-Modus ja zwei Werte, die man setzen kann. Wenn er an denen vorbeirauscht, löst er den Interrupt aus.
    Nur: Wieso macht er das mit zwei Werten? Einer würde doch reichen... (Er zählt doch hoch und runter, oder, beim 8-Bit von 0-255, dann von 255-0, oder??)
    Wieso zwei Werte? Geht das net auch mit einem?
    Wie geb ich dem das genau ein?
    Config Timer1=PWM, Prescale=1, und weiter??

    Herzliche Grüsse
    Mario

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Welche zwei Werte? Kannst du das Datenblatt mal zitieren?

  4. #4
    Murus
    Gast
    Ich zitiere aus der Bascom-Hilfe:

    And the Timer can be used in PWM mode.
    Man kann zwischen 8,9 und 10Bit Auflösung wählen.
    Man kann auch sagen, ob er nach einem "match to the compare registers" hoch oder runterzählen soll.
    Note that there are 2 compare Registers A and B
    Config Timer1= PWM, PWM=8, Compare A PWM= Clear Up, Compare B PWM= Clear down
    To set compare registers:
    Compare1a=100
    Compare 1b=200

    Zitat Ende

    Nun: Was bedeutet das alles?? Wie funktioniert diese PWM?

    Herzliche Grüsse
    Mario

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Compare1a=100
    Compare 1b=200
    Sind das die beiden Werte die du meinst?
    Jeder Wert ist für einen der beiden Ausgänge
    Da du bis jetzt noch nicht geschrieben hast um welchen AVR es sich handelt musst du dir selbst die Arbeit machen und suchen welche Pins das sind :P
    Bezeichnet sind sie mit OC1a und OC1b

  6. #6
    Murus
    Gast
    Ahaaa, so is dat gemeint!! Ahaa, der kann also zwei PWMs gleichzeitig auf zwei Pins ausgeben... Hab übrigens nen ATmega8...
    Asooo....
    Im 8Bit Modus zählt er also von 0 bis 255 und wieder runter. Und immer wenn er über einen der Werte rauscht, toggelt er den jeweiligen Pin..... Bei 10 Bit kann man die PWM am höchsten auflösen, oder?

    Nur: Wie schreibe ich das jetzt korrekt?
    Config Timer1=PWM, PWM=8, und jetzt? Was heisst dieses Clearup/Clear down??
    Geht das nicht irgendwie einfacher? Mit nur einem Pin? Und wie invertiere ich? (er soll beim erreichen des Wertes den Pin nicht H sondern L und umgekehrt schalten....)


    Herzliche Grüsse und vielen Dank

    Mario

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Geht das nicht irgendwie einfacher? Mit nur einem Pin?
    Entweder einen anderen Timer benutzen oder einfach nur einen Pin der zwei benutzen. Es zwingt dich ja niemand, OC1b auch zu verwenden.

    Beim zweiten Problem kann ich dir nicht helfen. Mir ist es egal ob er von H auf L oder von L auf H schaltet. Sorry

  8. #8
    Murus
    Gast
    Ok, hier im Forum hat einer noch eine Anleitung hinterlassen, da steht alles drin!

    Also, PWM kann ich jetzt erzeugen.
    Jetzt möchte ich ein Servo in Mittelstellung halten. Dafür brauch ich 20ms Pause zwischen den 1.5ms-Pulsen.
    Nur: Wie mach ich dat jetzt mit dem Timer1 auf PWM-Modus?
    Ich benutze den internen 1-Mhz-Oszi....
    Der macht mir 1 000 000 Schritte in der Sekunde.
    D.H. 20ms dauern 20000 Schritte, oder?
    Und die 1.5ms dauern 1500 Schritte...
    Hmm, also müssen wir die Frequenz teilen, zu viele Schritte, oder?

    Waaaah, wie mach ich das alles??

    Herzliche Grüsse
    Mario

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Hm, gibt auch den Befehl "Pulseout"

    Schon mal angeschaut?

  10. #10
    Murus
    Gast
    Nützt mir als Lerneffekt nix....
    Ich möchte per PWM mit Timer1 (und nur so) ein Servo ansteuern. Hab aber irgendwie das Problem mit der Beziehung ms und den Takten....
    Wie mach ich das? (alle 20ms den 1.5ms Puls)

    Greets
    Mario

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •