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
_____________________________________
: F2808 ePWM problem
Started by ●December 3, 2009
Reply by ●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
_____________________________________
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
_____________________________________