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:
Der Wert wird dann ausgegeben: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 Rest des Programms funktioniert einwandfrei, nur eben dieser Teil nicht.Code:while(1) { ltoa((int32_t)TCD0_CCC,debug1,10); SendPCUart(debug1,1); WaitMs(500); }
Hab ich was vergessen? Im DB konnte ich zumindest nichts finden, was mir weiterhelfen würde.
Vielen Dank & Gruß
Chris







Zitieren
Lesezeichen