Tool/software:
I am trying to configure eCap to continuously measure Period and Duty of a PWM input. I am testing with a 50% duty 10kHz PWM. ePWM0 generates the PWM, and I connect EPWM0A on the LaunchPad to the appropriate input also on the LaunchPad, GPIO104, with Xbar configured appropriately.
With a Logic Analyzer I confirmed the 50% duty cycle on GPIO104.
I see the CAP1 register as 0x26FB, CAP2=0x1C, CAP3=0x26FB,CAP4=0x1C, which of course does not match the 50% duty cycle.
Below are configuration details, based mainly on ecap_ex2_capture_pwm.c. Any suggestion on why I'm not capturing the PWM correctly?
Thanks!
GPIO configuration:
GPIO_setPinConfig(GPIO_104_GPIO104); GPIO_setDirectionMode(104, GPIO_DIR_MODE_IN); GPIO_setPadConfig(104, GPIO_PIN_TYPE_STD);
XBAR_setInputPin(XBAR_INPUT7, 104);
ECAP Config:
ECAP_setCaptureMode(ECAP1_BASE, ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_4);
ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_1, ECAP_EVNT_FALLING_EDGE); ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_2, ECAP_EVNT_RISING_EDGE); ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_3, ECAP_EVNT_FALLING_EDGE); ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_4, ECAP_EVNT_RISING_EDGE);
ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_1); ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_2); ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_3); ECAP_enableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_4);
ECAP_enableLoadCounter(ECAP1_BASE); ECAP_startCounter(ECAP1_BASE); ECAP_enableTimeStampCapture(ECAP1_BASE); ECAP_reArm(ECAP1_BASE);
ECAP_enableInterrupt(ECAP1_BASE, ECAP_ISR_SOURCE_CAPTURE_EVENT_4);