Che Guevara
17.02.2014, 20:48
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:
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:
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
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:
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:
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