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.

ECAP1 capture for C6748 setup



Hello,

I've been trying to setup ECAP1 in delta-mode to capture a square signal, but the capture events are not changing, I only read 0, could you have a look at the code below please, maybe you can spot something? 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_ECAP0_1_2, PSC_POWERDOMAIN_ALWAYS_ON,  PSC_MDCTL_NEXT_ENABLE);
 
//Select Pin E4 ECAP1
/* ECAP1 */
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =  (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) & (~(SYSCFG_PINMUX1_PINMUX1_31_28))) | (SYSCFG_PINMUX1_PINMUX1_31_28_ECAP1 << SYSCFG_PINMUX1_PINMUX1_31_28_SHIFT);
 
ECAPCaptureLoadingEnable(SOC_ECAP_1_REGS);
 
ECAPOperatingModeSelect(SOC_ECAP_1_REGS, ECAP_CAPTURE_MODE);
 
ECAPPrescaleConfig(SOC_ECAP_1_REGS, 0);//no prescale
 
 
ECAPCapeEvtPolarityConfig(SOC_ECAP_1_REGS, 1, 1, 1, 1);//rising, rising, rising, rising edges so that after 3 rising edges I have full rotation
 
ECAPCaptureEvtCntrRstConfig(SOC_ECAP_1_REGS, 1, 1, 1, 1 );//reset counter each time rising edge is found
 
ECAPContinousModeConfig(SOC_ECAP_1_REGS);   //set ecap in continuous mode to measure speed continuously
 
ECAPIntDisable(SOC_ECAP_1_REGS, ECAP_CEVT1_INT | ECAP_CEVT2_INT | ECAP_CEVT3_INT | ECAP_CEVT4_INT | ECAP_CNTOVF_INT | ECAP_PRDEQ_INT | ECAP_CMPEQ_INT);
 
ECAPSyncInOutSelect(SOC_ECAP_1_REGS, ECAP_SYNC_IN_DISABLE, ECAP_SYNC_OUT_DISABLE);
 
ECAPCounterConfig(SOC_ECAP_1_REGS, 0);//capture time base   =>reset ecap
ECAPCounterControl(SOC_ECAP_1_REGS, ECAP_COUNTER_FREE_RUNNING);//timer base counter to increase
Thank you in advance,
David.
  • Hello,

    I think I found the problems:

    In ecap.h the definitions for the ECAP_CAPTURE_MODE parameter for ECAPOperatingModeSelect function should be 0 instead of 1

    #define ECAP_CAPTURE_MODE 0 //check page spruh79a.pdf, bit 9
    #define ECAP_APWM_MODE 1  ...correction, it was ok, ECAPOperatingModeSelect is a bit confusing, set parameter to 1 to clear bit.

    Also, for ECAPSyncInOutSelect function the definitions are wrong, it overwrites the bit 9 setting it back to pwm mode

    #define ECAP_SYNC_IN (00 << ECAP_ECCTL2_SYNCO_SEL_SHIFT)    
    #define ECAP_PRD_EQ (01 << ECAP_ECCTL2_SYNCO_SEL_SHIFT)   
    #define ECAP_SYNC_OUT_DISABLE (10 << ECAP_ECCTL2_SYNCO_SEL_SHIFT)  //this should be 2 <<

    Hope someone can confirm this.

    Best regards,

    David.