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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.