Hallo,
ich verwende den o.g. DSC.
Ist es prinzipiell möglich mit den eCAP einen zyklischen Interrupt zu
erzeugen, wie z.B. mit einem "normalen" Timer?
Der tolle Reference Guide "SPRUFZ8A" gibt nicht soviel her.
Ich habe es jetzt mal wie folgt konfiguriert:
1 | // Konf. ECAP 1 im APWM mode. ISR soll aufgerufen werden, wenn Timer=PRD.
|
2 | ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0; // Stop TSCTR
|
3 | ECap1Regs.ECEINT.all=0; // Interrupts deaktivieren
|
4 | ECap1Regs.ECCLR.all = 0x0FF; // Interruptflags löschen
|
5 | ECap1Regs.ECEINT.bit.CTR_EQ_PRD = 1; // Erlauber Interrupt, wenn Zähler==Periode
|
6 | ECap1Regs.ECCTL2.bit.CAP_APWM = 1;// ECAP 1 im APWM mode
|
7 | ECap1Regs.CAP1 = 5000; // Setzte Wert für eine Periode
|
8 | ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start TSCTR
|
In der ISR ist folgendes zu finden:
1 | // Lösche Anforderungsflag
|
2 | ECap1Regs.ECCLR.bit.INT = 1;
|
3 |
|
4 | // Bekomme wetrere Interrups
|
5 | PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
|
Die Interrupts sind freigegeben, PIE ist gesetzt, etc.. Das sollte alles
passen.
Nun wird die ISR nicht nur aufgerufen wenn Zähler==Periode, sondern
irgendwie alle ?4-8? Takte!
Habe ich da etwas falsch konfiguriert?
Das eCAP-Register ist wohl ein wenig exotisch.... :o)
Hoffe jemand kann da mal drüber schauen!