-         
Ergebnis 1 bis 9 von 9

Thema: PWM Ausgang ansteuern - wie?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    28
    Beiträge
    324

    PWM Ausgang ansteuern - wie?

    Anzeige

    So, ihr AVR-GCC Cracks schüttelt jetzt warscheinlich wieder den Kopf und denkt euch ich sollte mit lieber ein Lehrbuch anschaffen als ständig hier Leute mit Fragen zu nerven, die sich nicht in einem Satz abhandeln lassen.

    Ich habe mit grade bei Reichelt zwei Motortreiber vom Typ L293D bestellt, nachdem ich mir im Artikelbereich die Ansteuerung angesehen hatte. Dort steht, dass man über ein PWM Signal an den enable Ports die Geschwindigkeit eines Getriebemotors regeln kann. Was ein PWM Signal ist weiss ich dank Lernpaket Mikrocontroller bereits, jedoch habe ich es da nur über eine Interfaceprogramm für den PC und über Assembler Programme genutzt. Jetzt wüsste ich gern wie man mit C die PWM Ports ansteuert und die Pulsdauer festlegt. Kann mir villeicht jemand ein klitzekleines kommentiertes Beispiel schreiben?

    Kontroller die ich zZ verwende sind attiny13 und atmega8

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    hier steht soviel :

    http://www.mikrocontroller.net/forum...nik?filter=pwm

    kanste garnicht alles verarbeiten!!!!!

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    28
    Beiträge
    324
    Leider ist da (soweit ich sehe) keine Erklärung dabei mit welchem Code man ein PWM Signal generiert, oder? Der attiny13 hat an PORTB 0 und der atmega 8 and OC 0 OC1A, OC1B, sowie OC2 einen PWM Ausgang.
    Wie (mit welchem Code) generiere ich dort ein PWM Signal?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    11.09.2007
    Ort
    Leipzig
    Alter
    37
    Beiträge
    31
    Das PWM generierst ja nicht du, sondern der Controller. Das ist halt das praktische.

    Bei PWM zählt immer erst einmal ein Counter bis bspw. 512 hoch (je nach PWM - 8,9,10 Bit) und danach wieder runter.
    Durch geschickte Wahl eines Prescalers bekommst du so erst mal die Dauer einer Periode.
    Mit dem OCR-Register wird nun eine Aussage über das Verhalen in dieser Periode ausgesagt, d.h. wie lange ist der Port HIGH, wie lange LOW.

    Nimmst du bspw. einen OCR von 200, zählt er 200Ticks hoch, schaltet dann den Port auf HIGH, zählt weiter bis 512, von 512 runter auf 200 und dort schaltet er den Port wieder auf LOW.
    Also hast du in dieser Beispielrechnung bei ner Periodendauer von 1024 Ticks (hoch+runter) den Port 624 Ticks lang HI und 400Ticks LOW.

    Lässt sich aber ganz gut hier herauslesen

    P.S: Das ist ein möglicher PWM-Modus. Weitere s.o. Link

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    das datenblatt vom chip bei winavr-c ist "PFLICHT" , sonst läuft nichts und ist alles glücksache. daher bin ich teilweise auf Bascom umgestiegen, mit 60 jahren wollte ich möglichs wenig datenblätter wälzen.

    man oh man, nimm dieses hier :

    http://www.mikrocontroller.net/artic...R-GCC-Tutorial

    "Tutorial" musste von hand einfügen, wird hier im forum ignoriert???!!!!???



    mfg

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.684

    Re: PWM Ausgang ansteuern - wie?

    Hallo Barthimaeus,

    wir kennen uns noch von der Diskussion mit dem tiny13 (und dem Lernpaket) an der Batterie

    Zitat Zitat von Barthimaeus
    So, ihr AVR-GCC Cracks schüttelt jetzt warscheinlich wieder den Kopf ... bei Reichelt zwei Motortreiber vom Typ L293D bestellt, ... Jetzt wüsste ich gern wie man mit C die PWM Ports ansteuert und die Pulsdauer festlegt. ... ein klitzekleines kommentiertes Beispiel schreiben? ... Kontroller die ich zZ verwende sind attiny13 und atmega8
    Leider kann ich Dir mit dem C-Code nicht helfen. Aber ich habe mit PWM´s schon ein bisschen rumgespielt. Mit der WIRKLICHEN PWM vom Controller. Für die Servos fahre ich im Prinzip auch eine PWM, ich nenn die PseudePWM, da schalte ich einen Port Timer-Interrupt-gesteuert aus und ein.

    Zurück zur PWM. Wenn Dich Assembler nicht abschreckt, könnte ich Dir mal dienen, leider eben nicht in C. Aber Du hast es doch einfach - guck doch mal in Dein Franzis-Buch ("Lernpaket..") etwa Seite 100, mit dem "weichen" Blinker. Dann weisste wie das geht. Ich hab das dort gelernt. ACHTUNG: dieses Tutorial fährt immer mit 1,2 MHz. Aber die PWM fährt ja immer einen von Dir vorgegebenen ANTEIL von einem Gesamtzyklus.

    Ziemlicht gut, aber anstrengend, weil alles in Englisch dasteht, sind die Handbücher der Controller. Hol Dir die doch. Die habe ich als PDF im Rechner, und zum grössten Teil auch ausgedruckt. Es ist einfach fast unmöglich, die vielen Variationsmöglichkeiten ohne diese Datenblätter (ATMEL nennt sie Datasheets) hinzukriegen.

    http://www.atmel.com/dyn/products/da...?family_id=607

    Die gibts da zum mega8 und zum tiny13 - aber zu allen anderen auch. Ach ja - es gibt von den datasheets eine Kurzfassung und eine lange. Nimm gleich die Langfassung - die Kurzfassung ist nur eine grobe Übersicht - zum Programmieren nicht geeignet.

    Wenns noch Probleme gibt frag mich einfach. Aber wie gesagt, im Moment bin ich noch auf dem Assembler-Trip.
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    28
    Beiträge
    324
    villeicht steige ich dann auch auf Bascom um, wenn das einfacher ist

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.684
    Ach - also in manchen Dingen ist Assembler leichter - man weiss (fast) immer, was man tut. Ok, für komplexere Aufgaben ist das - - - eben komplex, die muss man dann halt in einer Hochsprache machen.

    Ich schick Dir mal das PWM-Beispiel für den tiny13
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken pacer-60_21-auszug2.jpg  
    Angehängte Dateien Angehängte Dateien
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    28
    Beiträge
    324
    wär klasse ! (die datasheets sind ja tatsächlich brauchbar ^^)

Berechtigungen

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