Hello,

I am trying to do a simulation using Piccolo tms320f28027pt but i had a problem running any program successfully.

I wrote the bellow code (just to generate a pwm) and i loaded all necessary source/header files from CCS project (see image) into VSM.

Click image for larger version. 

Name:	project.PNG 
Views:	1 
Size:	81.2 KB 
ID:	153091

Code:
/* Main.c file generated by New Project wizard
 *
 * Created:   Tue May 14 2019
 * Processor: TMS320F28027PT
 * Compiler:  CodeComposer for Piccolo
 */

#include "DSP28x_Project.h"

// Prototype statements for functions found within this file.
void InitEPwm1Example(void);


// Global variables used in this example

// Configure the period for each timer
#define EPWM1_TIMER_TBPRD  30000                 //1Hz
#define EPWM1_CMPA     EPWM1_TIMER_TBPRD/2       // 20% duty cycle




void main(void)
{
// WARNING: Always ensure you call memcpy before running any functions from RAM
// InitSysCtrl includes a call to a RAM based function and without a call to
// memcpy first, the processor will go "into the weeds"
   #ifdef _FLASH
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
   #endif

// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the f2802x_SysCtrl.c file.
   InitSysCtrl();



// Step 2. Initialize GPIO:
// This example function is found in the f2802x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
// InitGpio();  // Skipped for this example

// For this case just init GPIO pins for ePWM1, ePWM2, ePWM3
// These functions are in the f2802x_EPwm.c file
   InitEPwm1Gpio();

  //SysCtrlRegs.CLKCTL.bit.XTALOSCOFF=0;
// Step 4. Initialize all the Device Peripherals:
// Not required for this example

// For this example, only initialize the ePWM

   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
   EDIS;

   InitEPwm1Example();


   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
   EDIS;


// Step 6. IDLE loop. Just sit and loop forever (optional):



   //select channel 2

   //gpio3 2sec period.......... gpio4 4sec period

       for (;;){
         
       }
}




void InitEPwm1Example()
{
   // Setup TBCLK
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up
   EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD;       // Set timer period
   EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;    // Disable phase loading
   EPwm1Regs.TBPHS.half.TBPHS = 0x0000;       // Phase is 0
   EPwm1Regs.TBCTR = 0x0000;                  // Clear counter
   EPwm1Regs.TBCTL.bit.HSPCLKDIV = 1;   // Clock ratio to SYSCLKOUT
   EPwm1Regs.TBCTL.bit.CLKDIV = 0;

   // Setup shadow register load on ZERO
   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
   EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

   // Set Compare values
   EPwm1Regs.CMPA.half.CMPA = EPWM1_CMPA;    // Set compare A value

   // Set actions
   EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;            // Set PWM1A on Zero
   EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;          // Clear PWM1A on event A, up count


}


// No more.
//===========================================================================
And the VSM studio output was: Firmware is already compiled, but when i start the simulation nothing is happened (no pwm, just high impedance pin)!! even when i generate the HEX file using CCS and upload it to proteus, i got the same output.

Click image for larger version. 

Name:	run.PNG 
Views:	0 
Size:	46.3 KB 
ID:	153089

you can see in the simulation log bellow that EPWM1 is OFF!!?

Click image for larger version. 

Name:	msg.PNG 
Views:	0 
Size:	16.1 KB 
ID:	153090

could someone show me how to fix this problem.



Thanks,