www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit dem PWM-Ausgang beim XMega


Autor: Nyquist-Shannon (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich hab Probleme mit meinem XMega64A3.
Hab ein Programm, bei dem sich das PWM-Signal am Ausgang des 
Mikrokontrollers etwa 5000 Mal in der Sekunde ändert.

Jedoch erzeugt der XMega eine Störung. Hab ein kleines Testprogramm 
geschrieben um es zu zeigen.


Der Timer des Ausgangs wird initialisiert.
void timer1_init(void)
{
TCE1.CTRLA = 0x01;
TCE1.CTRLB = 0xF3;
TCE1.PER = 0xC00;
}

Das Testprogramm ist schlicht.
int i=0;
while(1)
{
wdt_reset();
if(i<1){TCE1.CCA=1536;i++;} else{TCE1.CCA=1537;i++;} if(i==2){i=0;}
}

Den Ausgang hab ich mit einem Logikanalysator aufgezeichnet um den 
Fehler zu illustrieren (Anhang).


Sieht aus, als ob sich der Timer bei -700us für kurze Zeit aufhängt. 
Warum? Der Aufhänger taucht sporadisch auf und mir ist aufgefallen, je 
schneller ich den Ausgang toggle, desto häufiger tritt der Fehler auf.


Ich bedanke mich schon im voraus.

Gruß, Nyquist-Shannon

Autor: Kakadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei PWM gibt es ein grundsätzliches Problem, wenn das Compare-Register 
asynchron umgeschaltet wird.

Angenommen man hat einen Zähler, der von 0 - 100 läuft. Der Compare-Wert 
beträgt 70 und der Zähler steht aktuell bei 50. Schreibt man jetzt den 
Compare-Wert auf 30 um, muß der Zähler erst über 100 - 0 - 30 laufen, 
damit der Compare-Wert beachtet wird.

Dies kann man nur vermeiden, wenn der Compare-Wert immer synchron beim 
Überlauf 100 - 0 neu geschrieben wird. Dazu gibt es spezielle PWM-Modi 
und Register. Der XMEGA sollte das auch können.

Autor: Gerd T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
angeblich sind xmegas ja eine tot-geburt...

Autor: Kakadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>angeblich sind xmegas ja eine tot-geburt...

... und die Erde eine Scheibe.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kakadu schrieb:
> Dies kann man nur vermeiden, wenn der Compare-Wert immer synchron beim
> Überlauf 100 - 0 neu geschrieben wird. Dazu gibt es spezielle PWM-Modi
> und Register. Der XMEGA sollte das auch können.

Die OCR-Register sind, wie beim Mega auch, einfach gepuffert. Es ist 
also Bockwurst, wann das Register geschrieben wird. Die PWM ist auf 
jeden Fall frei von Störungen (Glitches), da immer bei Timer-Top das 
Register übernommen wird. Ich könnte mir nur vorstellen, dass von der 
Firmware auf Portregister geschrieben wird oder Kontrollbits 
gelöscht/gesetzt werden.

Autor: Nyquist-Shannon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Probieren hab ich festgestellt, dass im Dual Slope Mode keine 
Fehler entstehen. Nur im Single Slope Mode gibt es diese unerwarteten 
Fehler.
Ich muss aber mein Programm im Single Slope Mode betreiben um eine 
Trägerfrequenz von über 10kHz zu haben mit einer Auflösung von 3072.

Gruß, Nyquist-Shannon

Autor: Kakadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Knut Ballhause

Ich versteh Deine Aussage nicht. Ohne Pufferung von OCR müssen Fehler 
entstehen. Typischerweise, wenn der Wert von OCR verringert wird.

@Nyquist-Shannon

Es gibt doch die Register CCBUFx. Sowie ich das Datenblatt verstehe, 
wären das die "richtigen" Register.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kakadu schrieb:
> Es gibt doch die Register CCBUFx. Sowie ich das Datenblatt verstehe,
> wären das die "richtigen" Register.

Richtig!

Autor: Nyquist-Shannon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem Register CCBUFx funktioniert es jetzt einwandfrei.

Danke.

Gruß, Nyquist-Shannon

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.