Reply by Paulo Ricardo December 9, 20092009-12-09
Hi, I found my error. I forgot to turn on TBCLKSYNC in PCLKCR0.

Thanks,

Paulo Ricardo Pabst

-----Mensagem original-----
De: Paulo Ricardo [mailto:p...@yahoo.com.br]
Enviada em: quinta-feira, 3 de dezembro de 2009 15:18
Para: 'c...'
Assunto: [c28x]: F2808 ePWM problem

Hi, I'm using the SOCA signal from ePWM to fire the ADC SEQ1.
The problem is the ePWM that isn't counting, they stay with
value equal to zero every time. I had set the FREE bit, so they
must run ever with the system debug stopped, right?

If I manually set the EPwm1Regs.ETFRC.bit.SOCA, the ADC take a
sample.

Someone see this problem and know how to workaround?

EALLOW;

EPwm1Regs.TBPRD = 9999;
EPwm1Regs.TBPHS.all = 0;
EPwm1Regs.TBCTL.all = 0xE038;
// 1110.0000.0011.1000
// |||| |||| |||| ||++-- CTRMODE = 00
// |||| |||| |||| |+---- PHSEN = 0
// |||| |||| |||| +----- PRDLD = 1
// |||| |||| ||++------- SYNCOSEL = 11
// |||| |||| |+--------- SWFSYNC = 0
// |||| ||++ +---------- HSPCLKDIV = 000
// |||+ ++-------------- CLKDIV = 000
// ||+------------------ PHSDIR = 1
// |+------------------- SOFT = 1
// +-------------------- FREE = 1
EPwm1Regs.CMPA.half.CMPA= 100;
EPwm1Regs.CMPB = 0;
EPwm1Regs.CMPCTL.all = 0x0050;
// 0000.0000.0101.0000
// |||| |||| |||| ||++-- LOADAMODE = 00
// |||| |||| |||| ++---- LOADBMODE = 00
// |||| |||| |||+------- SHDWAMODE = 1
// |||| |||| ||+-------- RESERVED.
// |||| |||| |+--------- SHDWBMODE = 1
// |||| |||| +---------- RESERVED.
// |||| |||+------------ SHDWAFULL = 0
// |||| ||+------------- SHDWBFULL = 0
// ++++ ++-------------- RESERVED.
EPwm1Regs.ETSEL.all = 0x2201;
// 0010.0010.0000.0001
// |||| |||| |||| |+++-- INTSEL = 001
// |||| |||| |||| +----- INTEN = 0
// |||| |||| ++++------- RESERVED.
// |||| |+++------------ SOCASEL = 010
// |||| +--------------- SOCAEN = 0 - Set to start a conversion
// |+++----------------- SOCBSEL = 010
// +-------------------- SOCBEN = 0

EPwm1Regs.ETPS.all = 0x0100;
// 0000.0001.0000.0000
// |||| |||| |||| ||++-- INTPRD = 00
// |||| |||| |||| ++---- INTCNT = 00
// |||| |||| ++++------- RESERVED.
// |||| ||++------------ SOCAPRD = 01
// |||| ++-------------- SOCACNT = 00
// ||++----------------- SOCBPRD = 00
// ++------------------- SOCBCNT = 00

EDIS;

TIA,

-Paulo Ricardo Pabst

_____________________________________
Reply by Paulo Ricardo December 3, 20092009-12-03
Hi, I'm using the SOCA signal from ePWM to fire the ADC SEQ1.
The problem is the ePWM that isn't counting, they stay with
value equal to zero every time. I had set the FREE bit, so they
must run ever with the system debug stopped, right?

If I manually set the EPwm1Regs.ETFRC.bit.SOCA, the ADC take a
sample.

Someone see this problem and know how to workaround?

EALLOW;

EPwm1Regs.TBPRD = 9999;
EPwm1Regs.TBPHS.all = 0;
EPwm1Regs.TBCTL.all = 0xE038;
// 1110.0000.0011.1000
// |||| |||| |||| ||++-- CTRMODE = 00
// |||| |||| |||| |+---- PHSEN = 0
// |||| |||| |||| +----- PRDLD = 1
// |||| |||| ||++------- SYNCOSEL = 11
// |||| |||| |+--------- SWFSYNC = 0
// |||| ||++ +---------- HSPCLKDIV = 000
// |||+ ++-------------- CLKDIV = 000
// ||+------------------ PHSDIR = 1
// |+------------------- SOFT = 1
// +-------------------- FREE = 1
EPwm1Regs.CMPA.half.CMPA= 100;
EPwm1Regs.CMPB = 0;
EPwm1Regs.CMPCTL.all = 0x0050;
// 0000.0000.0101.0000
// |||| |||| |||| ||++-- LOADAMODE = 00
// |||| |||| |||| ++---- LOADBMODE = 00
// |||| |||| |||+------- SHDWAMODE = 1
// |||| |||| ||+-------- RESERVED.
// |||| |||| |+--------- SHDWBMODE = 1
// |||| |||| +---------- RESERVED.
// |||| |||+------------ SHDWAFULL = 0
// |||| ||+------------- SHDWBFULL = 0
// ++++ ++-------------- RESERVED.
EPwm1Regs.ETSEL.all = 0x2201;
// 0010.0010.0000.0001
// |||| |||| |||| |+++-- INTSEL = 001
// |||| |||| |||| +----- INTEN = 0
// |||| |||| ++++------- RESERVED.
// |||| |+++------------ SOCASEL = 010
// |||| +--------------- SOCAEN = 0 - Set to start a conversion
// |+++----------------- SOCBSEL = 010
// +-------------------- SOCBEN = 0

EPwm1Regs.ETPS.all = 0x0100;
// 0000.0001.0000.0000
// |||| |||| |||| ||++-- INTPRD = 00
// |||| |||| |||| ++---- INTCNT = 00
// |||| |||| ++++------- RESERVED.
// |||| ||++------------ SOCAPRD = 01
// |||| ++-------------- SOCACNT = 00
// ||++----------------- SOCBPRD = 00
// ++------------------- SOCBCNT = 00

EDIS;

TIA,

-Paulo Ricardo Pabst

_____________________________________