Forum: Mikrocontroller und Digitale Elektronik PWM xmega128a1


von Marco G. (grmg2010)


Lesenswert?

Moin,

ich versuche gerade die PWM des xmega128a1 in Betrieb zu nehmen. Leider 
scheitere ich jetzt daran. Konkret möchte ich den Timer0 von Port C 
nutzen. Hier mein Code zur Initialisierung:
1
PORTC.DIR = 0xFF;
2
3
TCC0.PER = 0xFFFF;
4
TCC0.CTRLA = 0x03; //Prescaler 4
5
TCC0.CTRLB = 0x23; //Ausgabe an Port C0 & Single Slope
6
TCC0.CCB = 0xFEE0;

Gruß

von Gerhard G. (xmega)


Lesenswert?

Hallo,

hier mein Code:

alle vier Ports auf PWM geschaltet


void sinus_init(void)
{

PORTC.DIRSET   = PIN0_bm; // Ausgang
PORTC.DIRSET   = PIN1_bm; // Ausgang
PORTC.DIRSET   = PIN2_bm; // Ausgang
PORTC.DIRSET   = PIN3_bm; // Ausgang

TCC0_CTRLA = TC_CLKSEL_DIV1_gc; // Prozessortakt keine Teilung
TCC0_CTRLB = TC_WGMODE_SS_gc | TC0_CCAEN_bm | TC0_CCBEN_bm | 
TC0_CCCEN_bm | TC0_CCDEN_bm;
TCC0_PER = 0xE1FF; // setze die Anzahl der Periode

TCC0_CCA = 0; //0x5FFF hell, 0x2FFF dunkel
TCC0.CCB = 0;
TCC0.CCC = 0;
TCC0.CCD = 0;

}

von Marco G. (grmg2010)


Lesenswert?

Vielen Dank für den Codeauschnitt. Ich hatte ihn gleich mal ausprobiert. 
Erst hat es nicht funktioniert, interessanterweise aber auf einmal doch.
Danach habe ich zu testzwecken meinen Code verwendet, welcher auch 
funktioniert. :/

Aber dennoch vielen Dank für den Denkanstoß. Wahrscheinlich habe ich den 
Wald vor lauter Bäumen nicht gesehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.