Part Number: LAUNCHXL-F28379D
I'd like to use the eCap in delta mode to capture time stamps with rising and falling edge detection as described in http://www.ti.com/lit/ug/sprug79/sprug79.pdf
//
// Disable ,clear all capture flags and interrupts
//
ECAP_disableInterrupt(ECAP1_BASE,
(ECAP_ISR_SOURCE_CAPTURE_EVENT_1 |
ECAP_ISR_SOURCE_CAPTURE_EVENT_2 |
ECAP_ISR_SOURCE_CAPTURE_EVENT_3 |
ECAP_ISR_SOURCE_CAPTURE_EVENT_4 |
ECAP_ISR_SOURCE_COUNTER_OVERFLOW |
ECAP_ISR_SOURCE_COUNTER_PERIOD |
ECAP_ISR_SOURCE_COUNTER_COMPARE));
ECAP_clearInterrupt(ECAP1_BASE,
(ECAP_ISR_SOURCE_CAPTURE_EVENT_1 |
ECAP_ISR_SOURCE_CAPTURE_EVENT_2 |
ECAP_ISR_SOURCE_CAPTURE_EVENT_3 |
ECAP_ISR_SOURCE_CAPTURE_EVENT_4 |
ECAP_ISR_SOURCE_COUNTER_OVERFLOW |
ECAP_ISR_SOURCE_COUNTER_PERIOD |
ECAP_ISR_SOURCE_COUNTER_COMPARE));
// ECap1Regs.ECCTL1.bit.CAP1POL = ECAP_EVNT_RISING_EDGE;
// ECap1Regs.ECCTL1.bit.CAP2POL = ECAP_EVNT_RISING_EDGE;
// ECap1Regs.ECCTL1.bit.CAP3POL = ECAP_EVNT_RISING_EDGE;
// ECap1Regs.ECCTL1.bit.CAP4POL = ECAP_EVNT_RISING_EDGE;
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);
// ECap1Regs.ECCTL1.bit.CTRRST1 = 1; // Difference mode
// ECap1Regs.ECCTL1.bit.CTRRST2 = 1; // Difference mode
// ECap1Regs.ECCTL1.bit.CTRRST3 = 1; // Difference mode
// ECap1Regs.ECCTL1.bit.CTRRST4 = 1; // Difference mode
ECAP_disableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_1);
ECAP_disableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_2);
ECAP_disableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_3);
ECAP_disableCounterResetOnEvent(ECAP1_BASE, ECAP_EVENT_4);
// ECap1Regs.ECCTL1.bit.CAPLDEN = 1;
ECAP_enableTimeStampCapture(ECAP1_BASE);
// ECap1Regs.ECCTL1.bit.PRESCALE = 0;
ECAP_setEventPrescaler(ECAP1_BASE, 1);
// ECap1Regs.ECCTL2.bit.CAP_APWM = 0;
ECAP_enableCaptureMode(ECAP1_BASE);
// ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;
ECAP_setCaptureMode(ECAP1_BASE, ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_1);
ECAP_setCaptureMode(ECAP1_BASE, ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_2);
ECAP_setCaptureMode(ECAP1_BASE, ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_3);
ECAP_setCaptureMode(ECAP1_BASE, ECAP_CONTINUOUS_CAPTURE_MODE, ECAP_EVENT_4);
// ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2;
ECAP_setSyncOutMode(ECAP1_BASE, ECAP_SYNC_OUT_DISABLED);
// ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;
ECAP_disableLoadCounter(ECAP1_BASE);
XBAR_setInputPin(XBAR_INPUT7, 16);
// ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;
ECAP_startCounter(ECAP1_BASE);
ECAP_enableInterrupt(ECAP1_BASE, ECAP_ISR_SOURCE_CAPTURE_EVENT_1);
// cap4Count = ECap1Regs.CAP4;
// cap1Count = ECap1Regs.CAP1;
// cap2Count = ECap1Regs.CAP2;
// cap3Count = ECap1Regs.CAP3;
DutyOnTime1 = ECAP_getEventTimeStamp(ECAP1_BASE, ECAP_EVENT_2);
DutyOffTime1 = ECAP_getEventTimeStamp(ECAP1_BASE, ECAP_EVENT_3);
DutyOnTime2 = ECAP_getEventTimeStamp(ECAP1_BASE, ECAP_EVENT_4);
DutyOffTime2 = ECAP_getEventTimeStamp(ECAP1_BASE, ECAP_EVENT_1);
Period1 = DutyOnTime1 + DutyOffTime1;
Period2 = DutyOnTime2 + DutyOffTime2;
ecap1IntCount++;
//
// Clear interrupt flags for more interrupts.
//
ECAP_clearInterrupt(ECAP1_BASE,ECAP_ISR_SOURCE_CAPTURE_EVENT_1);
ECAP_clearGlobalInterrupt(ECAP1_BASE);
//
// Acknowledge the group interrupt for more interrupts.
//
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP4);
Thanks!