+ Post New Thread
Results 1 to 2 of 2
  1. #1
    Newbie level 1
    Points: 20, Level: 1

    Join Date
    May 2019
    Location
    Algeria
    Posts
    1
    Helped
    0 / 0
    Points
    20
    Level
    1

    Simulation using Piccolo (TMS320f28027pt) in Proteus 8.8

    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:	2 
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:	1 
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,

    •   AltAdvertisement

        
       

  2. #2
    Newbie level 1
    Points: 243, Level: 2

    Join Date
    Feb 2018
    Posts
    1
    Helped
    0 / 0
    Points
    243
    Level
    2

    Re: Simulation using Piccolo (TMS320f28027pt) in Proteus 8.8

    Can you post the "InitEPwm1Gpio()" code ?



--[[ ]]--