hello
I want to convert TMS320f2812 based 500usec delay using Event manager into TMS320f2808 based ePWM module.
TMS320F2808 does not support event manager module so I have createted 500usec delay using PWM, time base module.
So below 2812 code is converted into 2808 code. Please confirm my code is correct.
// EV initialization Setup 500us timer for 2812
main.c
EvaRegs.T1PR = 586; // 1/(150Mhz/128) * 586 = 500us
EvaRegs.T1CON.bit.FREE = 0;
EvaRegs.T1CON.bit.SOFT = 0;
EvaRegs.T1CON.bit.TMODE = 2; // Direction Up
EvaRegs.T1CON.bit.TPS = 7; // Internal CLK / 128
EvaRegs.T1CON.bit.TENABLE = 0; // Enable only when needed
EvaRegs.T1CON.bit.TCLKS10 = 0;
EvaRegs.T1CON.bit.TCLD10 = 2; // Reload immediately
EvaRegs.T1CON.bit.TECMPR = 0;
EvaRegs.GPTCONA.bit.T2TOADC = 0;s
EvaRegs.GPTCONA.bit.T1TOADC = 0;
EvaRegs.GPTCONA.bit.TCMPOE = 0;
//delay function using EV module
void Delay_500usec(void)
{
EvaRegs.T1CNT = 0; // Initialize counter
EvaRegs.EVAIFRA.bit.T1PINT = 1; // Clear periodic interrupt bit
EvaRegs.T1CON.bit.TENABLE = 1; // Enable timer
while(!EvaRegs.EVAIFRA.bit.T1PINT)
{ \\500usec delay
}
}
//_________________________________2808 code for review______________________
main.c
// ePWM timebase module initialization Setup for 500us timer
EPwm1Regs.TBPRD =391; //Not sure
EPwm1Regs.TBCTL.bit.CLKDIV= 7; // Not sure
EPwm1Regs.TBCTL.bit.FREE_SOFT =0;
EPwm1Regs.TBCTL.bit.HSPCLKDIV =0; // Not sure
EPwm1Regs.TBCTL.bit.CTRMODE =2;
EPwm1Regs.TBCTL.bit.PHSDIR =1; //TB_UP
EPwm1Regs.TBCTL.bit.PRDLD = 1; //TB_IMMEDIATE
EPwm1Regs.TBCTL.bit.PHSEN =0; //TB_DISABLE
//delay function using ePWM module
void Delay_500usec(void)
{ EPwm1Regs.TBCTR =0;
EPwm1Regs.ETFLG.bit.INT = 0;
EPwm1Regs.ETSEL.bit.INTSEL = 2;
EPwm1Regs.ETSEL.bit.INTEN = 1; //Enable interrupt
EPwm1Regs.TBCTL.bit.PHSEN = 1; //TB_Enable
EPwm1Regs.ETPS.bit.INTPRD = 1; //// Generate INT on 1st event
while(!EPwm1Regs.ETFLG.bit.INT)
{ \\500usec delay
}
}
//------------code end -------------
So to generate 500usec delay what will be value for TBPRD,HSPCLKDIV and CLKDIV.
Please note that 2808 clkout is 100 Mhz
2812 clkout was 150 Mhz
Please replyu its urgent,
Thanks
Newbee