Guten Abend !
Ich beschäftige mich zur Zeit mit dem MicroController Typ Attiny2313 -
genauer gesagt: mit der PWM Funktion des Attiny2313. Als
Informationsquelle habe ich eine Lektüre sowie das AVR GCC Tutorial von
dieser Seite benutzt. Mein Anliegen für das Anwenden des PWM Ausganges
des µC ist die Ansteuerung eines Gleichstrommotors mit Hilfe des L293DNE
(Motortreiber), welcher ja einen PWM Eingang besitzt. Ich möchte mit
diesem Thread gerne erläutern wie es Verstanden wie man den PWM benutzt
um eventuelle Frage bzw. Missverständnisse zu beseitigen.
Ich möchte das generierte PWM Signal gerne am PIN PD5 bzw. OC1A
ausgeben, daher im DataDirectionRegister(=DatenRichtungsRegister??) von
PORT D den PD5 als Ausgang beschalten:
Jetzt möchte ich die PWM Auflösung einstellen: z.B. 8 Bit
1 | TCCR1A |= (1<<WGM10) | (1<<COM1A1);
|
Wird durch das Setzen von COM1A1 das Signal invertiert ?!
Was ist 8 Bit PWM ? Kann ich damit das PWM Signal in 2^8 also 256 Stufen
von VCC (=5V) varrieren ?
Das wäre ein Prescaler von 8 d.h. bei 12MHZ Takt 1.5MHz. Das heißt das
der Zähler (die FlipFlops im Attiny2313 ???) mit 1.5 MHz zählen oder ?
Das besondere eines PWM Signales ist ja die unterschiedliche Zeit von
LOW Phase zur High Phase. Jetzt habe ich das so verstanden das man im OC
Register also das Output Compare Register einen Wert speichert, der
immer abgefragt wird. Immer wenn der Zähler einen Wert erreicht, der mit
dem Compare Wert übereinstimmt, wird von High auf Low bzw. von Low auf
High geschaltet. Irre ich mich da ??
Was muss ich denn jetzt OCR1A Register speichern damit ich jetzt z.B.
eine Low Phase von x ms und eine High Phase von y ms haben möchte ?. Es
muss doch eine Möglichkeit geben das Mathematisch auszudrücken oder ?
Die Berechnungsformel für die mittlere Spannung des PWM Signales lautet
ja:
Um = Vcc*DC mit DC als Duty Cycle also: DC = tein / (tein+taus) Also:
Um = Vcc * t_High / ( t_High + t_Low) wobei hier VCC als 5V angenommen
werden kann.
Ich bin für jeden Tipp/Hinweis/Rat dankbar ;-).
Mit freundlichen Grüßen,
AVR[TR]