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.

CCS/TMS320F280049: ECAP use problems

Part Number: TMS320F280049


Tool/software: Code Composer Studio

Hi;

We are using the ECAP module of 280049,We creat a demo to test .Some problems we don't understand.

the code  as follows,the ECAP4 can't capture value use this code,the ECAP1-3 did .if change InputXbarRegs:ECAP1 use INPUT6,EAP2-4 use INPUT3-5,then ECAP1 can't capture value,EAP2-4  did.

what's wrong with it ? 

EALLOW;
InputXbarRegs.INPUT3SELECT = 13 ;
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pullup on GPIO13
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 0; // Synch to SYSCLKOUT
ECap1Regs.ECCTL0.bit.INPUTSEL = 3; // Select eCAP1 TO INPU13

InputXbarRegs.INPUT4SELECT = 12 ;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pullup on GPIO12
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0; // Synch to SYSCLKOUT
ECap2Regs.ECCTL0.bit.INPUTSEL = 4; // Select eCAP2 TO INPU12

InputXbarRegs.INPUT5SELECT = 13 ;
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pullup on GPIO13
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 0; // Synch to SYSCLKOUT
ECap3Regs.ECCTL0.bit.INPUTSEL = 5; // Select eCAP3 TO INPU16

InputXbarRegs.INPUT6SELECT = 12 ;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pullup on GPIO12
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0; // Synch to SYSCLKOUT
ECap4Regs.ECCTL0.bit.INPUTSEL = 6; // Select eCAP4 TO INPU12

//2.Init Regs .Ecap1-4
ECap1Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap1Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap1Regs.ECCTL1.bit.CAP1POL = 0; 
ECap1Regs.ECCTL1.bit.CAP2POL = 1;
ECap1Regs.ECCTL1.bit.CAP3POL = 0; 
ECap1Regs.ECCTL1.bit.CAP4POL = 1;
ECap1Regs.ECCTL1.bit.CTRRST1 = 1;
ECap1Regs.ECCTL1.bit.CTRRST2 = 1; // Difference operation
ECap1Regs.ECCTL1.bit.CTRRST3 = 1; // Difference operation
ECap1Regs.ECCTL1.bit.CTRRST4 = 1; // Difference operation
ECap1Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units
ECap1Regs.ECCTL1.bit.FREE_SOFT = 3;

ECap1Regs.ECCTL2.bit.CAP_APWM = 0; //ECAP;
ECap1Regs.ECCTL2.bit.SYNCI_EN = 0; // Enable sync in
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2; // Pass through
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap1Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap1Regs.ECEINT.bit.CEVT4 = 0; // 4 events = interrupt
ECap1Regs.ECCTL2.bit.STOP_WRAP = 3;

ECap2Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap2Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap2Regs.ECCTL1.bit.CAP1POL = 0; 
ECap2Regs.ECCTL1.bit.CAP2POL = 1; 
ECap2Regs.ECCTL1.bit.CAP3POL = 0;
ECap2Regs.ECCTL1.bit.CAP4POL = 1; 
ECap2Regs.ECCTL1.bit.CTRRST1 = 1; 
ECap2Regs.ECCTL1.bit.CTRRST2 = 1; // Difference operation
ECap2Regs.ECCTL1.bit.CTRRST3 = 1; // Difference operation
ECap2Regs.ECCTL1.bit.CTRRST4 = 1; // Difference operation
ECap2Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units
ECap2Regs.ECCTL1.bit.FREE_SOFT = 3;

ECap2Regs.ECCTL2.bit.CAP_APWM = 0; //ECAP;
ECap2Regs.ECCTL2.bit.SYNCI_EN = 0; // Enable sync in
ECap2Regs.ECCTL2.bit.SYNCO_SEL = 2; // Pass through
ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap2Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap2Regs.ECEINT.bit.CEVT4 = 1; // 4 events = interrupt
ECap2Regs.ECCTL2.bit.STOP_WRAP = 3;

ECap3Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap3Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap3Regs.ECCTL1.bit.CAP1POL = 0; 
ECap3Regs.ECCTL1.bit.CAP2POL = 1; 
ECap3Regs.ECCTL1.bit.CAP3POL = 0; 
ECap3Regs.ECCTL1.bit.CAP4POL = 1; 
ECap3Regs.ECCTL1.bit.CTRRST1 = 1; 
ECap3Regs.ECCTL1.bit.CTRRST2 = 1; // Difference operation
ECap3Regs.ECCTL1.bit.CTRRST3 = 1; // Difference operation
ECap3Regs.ECCTL1.bit.CTRRST4 = 1; // Difference operation
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units
ECap3Regs.ECCTL1.bit.FREE_SOFT = 3;

ECap3Regs.ECCTL2.bit.CAP_APWM = 0; //ECAP;
ECap3Regs.ECCTL2.bit.SYNCI_EN = 0; // Enable sync in
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 2; // Pass through
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap3Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap3Regs.ECEINT.bit.CEVT4 = 1; // 4 events = interrupt
ECap3Regs.ECCTL2.bit.STOP_WRAP = 3;

ECap4Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap4Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap4Regs.ECCTL1.bit.CAP1POL = 0; 
ECap4Regs.ECCTL1.bit.CAP2POL = 1; 
ECap4Regs.ECCTL1.bit.CAP3POL = 0; 
ECap4Regs.ECCTL1.bit.CAP4POL = 1;
ECap4Regs.ECCTL1.bit.CTRRST1 = 1; 
ECap4Regs.ECCTL1.bit.CTRRST2 = 1; // Difference operation
ECap4Regs.ECCTL1.bit.CTRRST3 = 1; // Difference operation
ECap4Regs.ECCTL1.bit.CTRRST4 = 1; // Difference operation
ECap4Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units
ECap4Regs.ECCTL1.bit.FREE_SOFT = 3;

ECap4Regs.ECCTL2.bit.CAP_APWM = 0; //ECAP;
ECap4Regs.ECCTL2.bit.SYNCI_EN = 0; // Enable sync in
ECap4Regs.ECCTL2.bit.SYNCO_SEL = 2; // Passx through
ECap4Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap4Regs.ECCTL2.bit.REARM = 1; // arm one-shot
ECap4Regs.ECEINT.bit.CEVT4 = 1; // 4 events = interrupt
ECap4Regs.ECCTL2.bit.STOP_WRAP = 3;

EDIS;

thanks !