Xmega Soft-PWM

Gast #3352269
Lesenswert?

Hallo,

Ich versuche gerade das Software PWM Beispiel hier aus dem Forum auf 
einen Xmega zu portieren. 
http://www.mikrocontroller.net/articles/Soft-PWM

Ich habe jetzt schon einiges Versucht, aber ich finde leider nicht die 
richtigen Einstellungen für den Timer

Kann mir jemand sagen, was ich für Einstellungen benötige, damit das 
Ganze funktioniert.

schon mal vielen Dank
Gast #3352402
Lesenswert?

Martin Kreiner schrieb:
> Sag erst mal, welchen µC du überhaupt benutzt.

bei den Xmega's sind alle normalen Timer, egal welcher Controller oder 
Port gleich aufgebaut, von daher ists egal, man müsste nur den 
Buchstaben für den Port und die Timer Nummer ändern.

Gerhard Gehlert schrieb:
> hier findest du die nötige Hilfe:

Wie die Timer funktionieren und alles weiß ich selber, ich finde aber 
nicht den richtigen Modus, so dass das Beispiel mit dem Software PWM 
hier aus dem Forum funktioniert.
http://www.mikrocontroller.net/articles/Soft-PWM

Ist hier vielleicht jemand der mir sagen kann, welchen Modus ich bei den 
Xmegas verwenden muss. Leider gibt es den im Beispiel verwendeten CTC 
Modus nicht.

die folgenden Einstellungen müssten doch dem Modus CTC bei den Atmegas 
entsprechen.
1
  //####################################### PWM PortC
2
  TCC0.CTRLB    |= TC_WGMODE_NORMAL_gc;    // Mode     
3
  TCC0.CNT    = 0;            // Zählerregister
4
  TCC0.PER    = 5;            // Top-Wert      
5
  TCC0.CTRLA    = TC_CLKSEL_DIV8_gc;    // Presacler 
6
  TCC0.INTCTRLA  = TC_OVFINTLVL_LO_gc;    // Interrupt Level
Angehängte Dateien:
#3352503
Lesenswert?

Hallo,


nach deinem Beispiel benötigst du z.B. alle 10ms einen Zugriff auf deine 
PWM Routine.

der Timer läuft mit 10ms:

TCC0.PER = 0x9C3F; // 10 ms Tastenabfrage bei 32 MHZ
TCC0.CTRLA = ( TCC0.CTRLA & ~TC0_CLKSEL_gm ) | TC_CLKSEL_DIV8_gc;
TCC0.INTCTRLA = ( TCC0.INTCTRLA & ~TC0_OVFINTLVL_gm ) | 
TC_OVFINTLVL_LO_gc;

// Enable HI/MED/LO interrupt level
// Interupt einschalten
PMIC.CTRL |= PMIC_LOLVLEN_bm;

sei();

 ISR(TCC0_OVF_vect)  // z.B 10ms für Tastenentprellung
{

// dein Code

}

Gruß G.G

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