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.
1 | void timer1_init(void)
|
2 | {
|
3 | TCE1.CTRLA = 0x01;
|
4 | TCE1.CTRLB = 0xF3;
|
5 | TCE1.PER = 0xC00;
|
6 | }
|
Das Testprogramm ist schlicht.
1 | int i=0;
|
2 | while(1)
|
3 | {
|
4 | wdt_reset();
|
5 | if(i<1){TCE1.CCA=1536;i++;} else{TCE1.CCA=1537;i++;} if(i==2){i=0;}
|
6 | }
|
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