Hi,

ich möchte per Input Capture an einem ATXMega16A4 den Duty-Cycle eines PWM-Signals (488Hz) messen. Nur irgendwie ist der Wert des CC Registers immer 0.
Der Timer wird konfiguriert wie folgt:
- Normal Mode
- CCC enabled
- Prescaler = 1

Verwendet wird Timer TCD0, das Signal liegt an PD.2 an (also CC C). Interrupts sind alle aktiviert, obwohl das hier sowieso keine Rolle spielen sollte?!
Die Routine:
Code:
void InitPwmInputTimer(void)
{
    PwmInputPinConfig;
    
    PORTD.PIN2CTRL = PORT_ISC_FALLING_gc;
    EVSYS.CH0MUX = EVSYS_CHMUX_PORTD_PIN2_gc;
    
    PwmInputTimer.CTRLA = 0x01; //Prescaler = 1
    PwmInputTimer.CTRLB = 0x40; //CC C enabled , normal mode
    PwmInputTimer.CTRLD = 0xC8; //Event = pulse width capture , EventSource = EVSYS_CH0
    PwmInputTimer.PER = 0x7FFF;    
}
Der Wert wird dann ausgegeben:
Code:
    while(1)
    {
        ltoa((int32_t)TCD0_CCC,debug1,10);
        SendPCUart(debug1,1);
        WaitMs(500);
    }
Der Rest des Programms funktioniert einwandfrei, nur eben dieser Teil nicht.
Hab ich was vergessen? Im DB konnte ich zumindest nichts finden, was mir weiterhelfen würde.

Vielen Dank & Gruß
Chris