Forum: Mikrocontroller und Digitale Elektronik Xmega Soft-PWM


von bluematrix (Gast)


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

von Martin K. (maart)


Lesenswert?

Im Datenblatt stehen die Einstellungen.

von bluematrix (Gast)


Lesenswert?

is klar.
dann sag mir bitte wie ich den Timer konfigurieren muss.

von Martin K. (maart)


Lesenswert?

Sag erst mal, welchen µC du überhaupt benutzt.

von Gerhard G. (g_g)


Lesenswert?

Hallo,

hier findest du die nötige Hilfe:

http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial



Gruß G.G.

von bluematrix (Gast)


Angehängte Dateien:

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

von Gerhard G. (g_g)


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

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.