Unterschied PWM mode 1 und 5 bei Attiny25

Gast #1446239
Lesenswert?

Guten Abend,


kann mir (blutiger Anfänger) jemand kurz den Unterschied zwischen den 
beiden PWM-modes 1 und 5 erklären?
Ich steig' gerade nicht mehr durch.
Laut Tabelle 11-5 und der Erläuterung auf Seite 77 im Datenblatt zählt 
der Timer bei Phase Correct PWM entweder von BOTTOM bis 0xFF oder von 
BOTTOM bis OCRA0, je nach Zusand der WGM-Bits in TCCR0.

Was für einen Sinn hat es überhaupt, den Timer bis OCRA0 zählen zu 
lassen? Ich dachte, der entsprechende Pin wird bei jedem compare match 
umgeschalten. Würde der Timer jetzt bei OCRA0 "umkehren", könnte man 
doch das Verhältnis der Pulsweiten zueinander gar nicht ändern, sondern 
nur die Frequenz des Umschaltens.

Was mich völlig verwirrt: ich probiere das ganze gerade an einer LED an 
PORTB0 aus, und egal ob ich WGM02 und WGM00 setze oder nur WGM00, es 
kommt immer das selbe raus.

Ich sitze gerade schon ziemlich lange vor dem Datenblatt bzw. meiner LED 
und denke, dass ich einfach irgendwo auf dem Schlauch stehe.


Hier noch der Code und wie gesagt, wird WGM02 nicht gesetzt, kommt das 
gleiche raus. (Setze ich z.B. OCRA0 = 200, leuchtet die LED stärker. 
soweit funktioniert's also schonmal):
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4

5

6
int main (void)
7
{
8
uint16_t i=0;
9

10
sei();
11
DDRB   |= (1<<DDB0) | (1<<DDB1);
12

13
TCCR0A |= ( (1<<WGM02) | (1<<WGM00) | (1<<COM0A1) );
14
TCCR0B |= ( (1<<CS01) | (1<<CS00) ) ;
15

16
OCR0A=20;
17

18
while (1)
19
{
20
}
21
}

Vielen Dank!
Gast #1446262
Lesenswert?

Ok, das beides mal das gleiche rauskam lag wohl daran, dass
WGM02 in TCCR0B liegt und nicht in TCCR0A.

Bleibt also nur noch meine Frage nach dem Sinn von Modus 5. Aber ich 
vermute mal, das Ganze dient einfach dazu, die PWM an die Frequenz zu 
koppeln.

Richtig?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren