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.
Tool/software: Code Composer Studio
Hallo, I am new here.
I use a TMS320F28377S LaunchPad Development Kit.
I loaded the Project hrpwm_duty_sfo_cpu01 from the controlSUITE Examples( controlSUITE-> device_support->v210->hprwm_duty_sfo_v8->cpu01->hrpwm_duty_sfo_cpu01).
The Problem i have is that the expectet PWM Period is not the PWM Period i measure.
On page 1442/2352 of the Technical Reference Manual there is a note that the EPWMCLK = SYSCLKOUT/2.
So EPWMCLK should run with 100 MHz ( 10 ns).
The HSPCLKDIV and CLKDIV Divider are set to the factor 1. So the TBCLK Clock should run with 100 MHz (10 ns) refer to page 1443/2352 (Technical Reference Manual)
So i would expect that call the HRPWM_Config function with a value of 10 would generate a PWM Periode of 10*10ns= 100 ns.
The real PWM Period (measured ) is 200 ns.
I don't know why . Can anybody explain why the PWM Period is 200ns instead of 100ns.
I did nothing change in the project example. Using Code Composer Studio Version: 6.2.0.00050
HRPWM_Config(10); // ePWMx target void HRPWM_Config(period) { Uint16 j; // // ePWM channel register configuration with HRPWM // ePWMxA / ePWMxB toggle low/high with MEP control on Rising edge // for (j=1;j<PWM_CH;j++) { (*ePWM[j]).TBCTL.bit.PRDLD = TB_SHADOW; // set Immediate load (*ePWM[j]).TBPRD = period-1; // PWM frequency = 1 / period (*ePWM[j]).CMPA.bit.CMPA = period / 2; // set duty 50% initially (*ePWM[j]).CMPA.bit.CMPAHR = (1 << 8); // initialize HRPWM extension (*ePWM[j]).CMPB.bit.CMPB = period / 2; // set duty 50% initially (*ePWM[j]).CMPB.all |= (1 << 8); // initialize HRPWM extension (*ePWM[j]).TBPHS.all = 0; (*ePWM[j]).TBCTR = 0; (*ePWM[j]).TBCTL.bit.CTRMODE = TB_COUNT_UP; (*ePWM[j]).TBCTL.bit.PHSEN = TB_DISABLE; (*ePWM[j]).TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; (*ePWM[j]).TBCTL.bit.HSPCLKDIV = TB_DIV1; (*ePWM[j]).TBCTL.bit.CLKDIV = TB_DIV1; (*ePWM[j]).TBCTL.bit.FREE_SOFT = 11; (*ePWM[j]).CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; (*ePWM[j]).CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; (*ePWM[j]).CMPCTL.bit.SHDWAMODE = CC_SHADOW; (*ePWM[j]).CMPCTL.bit.SHDWBMODE = CC_SHADOW; (*ePWM[j]).AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low (*ePWM[j]).AQCTLA.bit.CAU = AQ_CLEAR; (*ePWM[j]).AQCTLB.bit.ZRO = AQ_SET; (*ePWM[j]).AQCTLB.bit.CBU = AQ_CLEAR; EALLOW; (*ePWM[j]).HRCNFG.all = 0x0; (*ePWM[j]).HRCNFG.bit.EDGMODE = HR_FEP; // MEP control on falling edge (*ePWM[j]).HRCNFG.bit.CTLMODE = HR_CMP; (*ePWM[j]).HRCNFG.bit.HRLOAD = HR_CTR_ZERO; (*ePWM[j]).HRCNFG.bit.EDGMODEB = HR_FEP; // MEP control on falling edge (*ePWM[j]).HRCNFG.bit.CTLMODEB = HR_CMP; (*ePWM[j]).HRCNFG.bit.HRLOADB = HR_CTR_ZERO; #if (AUTOCONVERT) (*ePWM[j]).HRCNFG.bit.AUTOCONV = 1; // Enable auto-conversion // logic #endif (*ePWM[j]).HRPCTL.bit.HRPE = 0; // Turn off high-resolution period // control. EDIS; } }
Thank you very much,
Jonas
Hi Jonas,
Look like CPU is running at 100MHz and not 200MHz.
Pease see following post on similar issue -
LAUNCHXL-F28377S LaunchPad - C2000 microcontrollers forum - C2000™︎ microcontrollers - TI E2E support...
Regards,
Vivek Singh