-         

Ergebnis 1 bis 9 von 9

Thema: 2 unterschiedliche PWMs an OC1A und OC1B erzeugen?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Beiträge
    52

    2 unterschiedliche PWMs an OC1A und OC1B erzeugen?

    Anzeige

    Hallo, ich möchte 2 Motoren ansteuern (links,rechts).
    Es soll natürlich möglich sein beide unterschiedlich schnell drehen zu lassen oder?
    Hier ist mein Ansatz:
    Code:
    void pwm_init()
    {
     DDRB =  1<<PB1)  | (1<<PB2);	//PINS als Ausgang konfigurieren
     TCCR1A 	= (1<<WGM10) | (1<<WGM11); 
     /* Einstellen der PWM-Frequenz auf ca. 8 kHz ( Prescaler = 1 ) */ 
     TCCR1B 	= (1<<CS10); 
    }
    void motor_links(int geschw)
    {
     PORTD |= (1<<PD5);
     PORTB &= ~(1<<PB0);
     OCR1A = geschw;
     TCCR1A |=  (1<<COM1A1) ;//Start
    
    }
    void motor_rechts(int geschw)
    {
     PORTD &= ~(1<<PD6);
     PORTD |=  (1<<PD7);
     OCR1B = geschw;
     TCCR1A |=  (1<<COM1B1) ;//Start
    
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Sieht in etwa richtig aus... hab grad kein Lust, alles noch mal im Datenplatt nachzuschlagen. Nur in der dritten Zeile solltest du noch ne Klammer setzen, aber das wird dir der Complier auch noch mitteilen. Ansonsten: probier es doch einfach aus!

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.607
    Gibt es zu PWM in C gute Tuts? Gerade zum Thema Servosteuern. ..

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2006
    Beiträge
    734

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Beiträge
    52
    Der Code da oben von mir funktioniert.
    Ich hatte nur die Motoren falsch angeschlossen, somit war alles irgendwie bißchen komisch.
    Danke für die schnellen Antworten.

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Zitat Zitat von BlackDevil
    Gibt es zu PWM in C gute Tuts? Gerade zum Thema Servosteuern. ..
    Also ich hatte über diese beiden:
    http://www.mikrocontroller.net/articles/AVR_PWM und
    http://www.roboternetz.de/wissen/index.php/Servos
    na ja, eigentlich eher nur über den PWM-Artikel mitunter geschimpft. Aber das liegt entweder an meiner Denk-Trägheit oder vielleicht ein bisschen an der relativen Kompliziertheit der PWM - solange ich die nicht wirklich verstanden hatte, kam sie mir doch komplex vor. Anfangs hatte ich PWM´s softwaremässig gemacht, weil ich sie hardwaremässig nicht hinbekommen hatte - aber nun funktioniert das recht prächtig (bei meinen Aufgabenstellungen). Immerhin laufen z.B. für einen Zweiräder die beiden PWM´s OC0A und OC0B für die Motoren - kplt. mit Regelung, die sogar einen prächtigen Geradeauslauf ergibt, und daneben/dazu eine PWM OC1A für drei IR-LED für drei SFH5110 auf einem mega168. Und die tun genau das was ich will . Ich will damit sagen - ich hatte als Anfänger vor einigen Monaten erhebliche Probleme mit dem Tutorial und den doc´s. Aber jetzt verstehe ich die PWM einigermassen. Na ja, es ging eben nicht auf die Schnelle . . .
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Ein Problem ist, dass es viele verschiedene Timer-Versionen gibt. Je nach Alter und Größe des AVRs gibt es da deutliche Unterschiede in der Ausstattung. Das macht es schwer, ein kurzes, allumfassendes Tutorial zu schreiben...

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Zitat Zitat von uwegw
    ... Problem ... verschiedene Timer-Versionen ... schwer, ein kurzes, allumfassendes Tutorial zu schreiben...
    Stimmt. Dabei gibt es ja sehr umfassende Timer-Tutorials - in den docs. Ich hatte mit einem tiny13 angefangen, danach ein 2313, dann ein m32 auf RNControl, ein m16 - mal so zum Spass, weil der auf das RNControl passte (klar, war Schwachsinn) - und bin dann beim m168 gelandet. Dauernd ein anderes doc - ich kannte da keines auch nur annähernd und musste immer nachblättern (tut ja keiner). Vorerst bleibe ich auch bei dem m168. Nach einiger Zeit kannte ich mich dann auch etwas besser aus und komme derzeit mit dem doc relativ gut zurecht. CGS. Im Nachhinein betrachtet muß ich sagen, es wird dort alles recht gut erklärt. Halt nicht Anfänger-like.
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.607
    http://www.avrfreaks.net/index.php?n...wtopic&t=50106 Das Timer Tutorial funzt mit jedem Mega (getestet) und ählich isses auch mit PWM. Es geht eigentlich nur drum: Was macht PWM und wie Implementiere ich es und welche möglichkeiten gibt es es zu Implementieren.

    Die beiden Fragen beantworten die hier geposteten Tuts für mich nich

    OCR1A=128; // LED 50%
    Liegt das daran weil der Timer 8 bit hat und damit von 0 bis 256 Zählt? Dann wäre die MItte 128 ... Und wo is der zusammenhang Port B und PWM?

    edit: seh gerade http://www.mikrocontroller.net/artic...nmodulation.29 das hier ^^ das is das was ich suchte ... wieso is mir das nie aufgefallen

Berechtigungen

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