Hallo Community
Ich versuche gerade die PWM-Erzeugung auf einem XMega32 zu verstehen.
Ich glaube ich habe es soweit verstanden, ich möchte nur sicher gehen,
und euch fragen ob ich so alles richtig mache.
Zum Problem: Ich möchte vier unterschiedliche PWM Signale an je einem
Pin des µC ausgeben.
Dazu muss ich zuerst z.b. den Timer TCD0 einstellen: (dieser gibt
standardmäßig die Signal am Port D aus)
TCD0.PER = 0xffff; // Periode des Timers
TCD0.CTRLA = TC_CLKSEL_DIV1_gc; // Prescaler auf 1
TCD0.CTRLB = TC_WGMODE_SS_gc // SingleSlope Wavemode
| TC0_CCDEN_bm // 4 Outputs an: OC0D (Pin 23)
| TC0_CCCEN_bm // OC0C (Pin 22)
| TC0_CCBEN_bm // OC0B (Pin 21)
| TC0_CCAEN_bm; // OC0A (Pin 20)
TCD0.CCA = 70; // Bei Zählerstand 70 wird der Wert an Pin 20
getoggled
TCD0.CCB = 100;
TCD0.CCC = 120;
TCD0.CCD = 300;
PORTD.DIR = 0xff;
Wenn ich die Signale am Port E ausgeben möchte, benutze ich dann zum
Beispiel den Timer TCE0, der seine Signal standardmäßig auf Port E
ausgibt.
Es stehen mir also beim XMega32 die Timer TCC0, TCD0, TCE0 mit jeweils 4
PWM Channels zur Auswahl. Deren Outputs liegen immer auf den
"OC0A:D"-Pins.
Ich hoffe das war richtig bisher, ich plane nämlich gerade eine
Schaltung und überlege wo ich meine PWM-Signale anschließen muss.
Viele Grüße
Matthias