请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-F28379D 我想使用处于 delta 模式的 ECAP 来捕获具有上升沿和下降沿检测功能的时间戳、如 http://www.ti.com/lit/ug/sprug79/sprug79.pdf 中所述
// //禁用,清除所有捕获标志和中断 // ECAP_disableInterrupt (ECAP1_base、 (ECAP_ISR_SOURC_CAPTURE_EVENT_1 | ECAP_ISR_SOURC_CAPTURE_EVENT_2 | ECAP_ISR_SOURC_CAPTURE_EVENT_3 | ECAP_ISR_SOURC_CAPTURE_EVENT_4 | ECAP_ISR_SOURC_COUNTER_OVERflow | ECAP_ISR_SOURC_COUNTER_PERIOD | eCAP_ISR_SOURC_COUNTER_COMPARE); ECAP_clearInterrupt (ECAP1_base、 (ECAP_ISR_SOURC_CAPTURE_EVENT_1 | ECAP_ISR_SOURC_CAPTURE_EVENT_2 | ECAP_ISR_SOURC_CAPTURE_EVENT_3 | ECAP_ISR_SOURC_CAPTURE_EVENT_4 | ECAP_ISR_SOURC_COUNTER_OVERflow | ECAP_ISR_SOURC_COUNTER_PERIOD | ECAP_ISR_SOURCE COUNTER_COMPARTE); // ECAP1Regs.ECCTL1.bit.CAP1POL = ECAP_EVNT_RISING; // ECAP1Regs.ECCTL1.bit.CAP2POL = ECAP_EVNT_RISE_EDGE; // ECap1Regs.ECCTL1.bit.ECAP_ECC1POL = ECAP_LET.EACT_RISE_EDGE/ ECAP.LET.EACT_EDGEL = ECAP_EDGE/ ECAP_EACT_EACT_EDGEL = ECAP_EDGE_EDGE/ ECAP.EACT_EACT_EV ECAP_setEventPolarity (ECAP1_base、ECAP_EVENT_1、ECAP_EVNT_RISTING _EDGE); ECAP_setEventPolarity (ECAP1_base、ECAP_EVENT_2、ECAP_EVNT_FALLING_EDGE); ECAP_setEventPolarity (ECAP1_base、ECAP_EVENT_3、ECAP_EVNT_RISTING _EDGE); ECAP_setEventPolarity (ECAP1_base、ECAP_EVENT_4、ECAP_EVNT_FALLING_EDGE); // ECap1Regs.ECCTL1.bit.CTRRST1 = 1;//差分模式 // ECAP1Regs.ECCTL1.bit.CTRST2 = 1;//差分模式/ECAP1Regs.ECTR1.bit.ECCTL1 ;//差 分模式/ECTR1.EC1RCT1 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_CONTINUE_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++; // //清除更多中断的中断标志。 // ECAP_clearInterrupt (ECAP1_base、ECAP_ISR_SOURCE、CAPTURE_EVENT_1); ECAP_clearGlobalInterrupt (ECAP1_base); // //确认组中断以获得更多中断。 // INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group4);
谢谢!