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!
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 }
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!
Gibt es zu PWM in C gute Tuts? Gerade zum Thema Servosteuern. ..
Kennst du schon http://www.mikrocontroller.net/artic...R-GCC-Tutorial ?
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.
Also ich hatte über diese beiden:Zitat von BlackDevil
http://www.mikrocontroller.net/articles/AVR_PWM und
https://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
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...
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.Zitat von uwegw
Ciao sagt der JoeamBerg
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
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?OCR1A=128; // LED 50%
edit: seh gerade http://www.mikrocontroller.net/artic...nmodulation.29 das hier ^^ das is das was ich suchte ... wieso is mir das nie aufgefallen
Lesezeichen