This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28379D: eCap problems - Can only capture rising edges

Part Number: TMS320F28379D

Hi,

I'm trying to capture a 1 kHz PWM signal

Here's my init code 


ECAP_disableTimeStampCapture(ECAP1_BASE);

ECAP_stopCounter(ECAP1_BASE);
ECAP_enableCaptureMode(ECAP1_BASE);
ECAP_setCaptureMode(ECAP1_BASE, ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_4);
ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_1, ECAP_EVNT_RISING_EDGE);
ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_2, ECAP_EVNT_FALLING_EDGE);
ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_3, ECAP_EVNT_RISING_EDGE);
ECAP_setEventPolarity(ECAP1_BASE, ECAP_EVENT_4, ECAP_EVNT_FALLING_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_setEventPrescaler(ECAP1_BASE, 1);

ECAP_startCounter(ECAP1_BASE);
ECAP_enableTimeStampCapture(ECAP1_BASE);
ECAP_reArm(ECAP1_BASE);

ECAP_setEmulationMode(ECAP1_BASE, ECAP_EMULATION_STOP);


Now in my ISR, I do

for (int i = 0; i < 4;i++)
{
tEvents[i] = ECAP_getEventTimeStamp(eCapBase, static_cast<ECAP_Events> (i) );
}

However, all tEvents are approximately equal to 200000. Since my clock is 100 MHz, it would mean the delay between 2 rising edges is approximately 400 000 or 250 Hz. However, I set my generator to a PWM of 1 kHz with a duty cycle of 20%..


I don't get what I'm doing wrong