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.

Step by Step instruction on how to flash F28027F from CCS 6.0.1

Other Parts Discussed in Thread: CONTROLSUITE

Hello,

Can anyone help me with flashing the following code in the C2000? I have tried using release, but got error: 

C28xx: GEL: Encountered a problem loading file: D:\codes\workspace\a\Release\a.out Could not open file

S1, S2, and S3 are all in up position on the boot switch.

#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File

#include "f2802x_common/include/clk.h"
#include "f2802x_common/include/flash.h"
#include "f2802x_common/include/gpio.h"
#include "f2802x_common/include/pie.h"
#include "f2802x_common/include/pll.h"
#include "f2802x_common/include/sci.h"
#include "f2802x_common/include/wdog.h"

interrupt void sciaRxIsr(void);
void scia_init();
void scia_xmit(int a);
void scia_intpt_en();
void send_msg();
unsigned char msg[]="\nsend duty cycle:";

void pwm_Init_();
void set_duty(int x);
unsigned int TBPRD = 65535; // Period register
unsigned int CMPA=0; //32500;
int duty = 50;
int c=0;

CLK_Handle myClk;
GPIO_Handle myGpio;
PIE_Handle myPie;
SCI_Handle mySci;
CPU_Handle myCpu;
PLL_Handle myPll;
WDOG_Handle myWDog;
PWM_Handle myPwm1;
PWM_Handle myPwm2;
void main(void)
     {
     myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));
     myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));
     myGpio = GPIO_init((void *)GPIO_BASE_ADDR, sizeof(GPIO_Obj));
     myPie = PIE_init((void *)PIE_BASE_ADDR, sizeof(PIE_Obj));
     myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));
     mySci = SCI_init((void *)SCIA_BASE_ADDR, sizeof(SCI_Obj));
     myWDog = WDOG_init((void *)WDOG_BASE_ADDR, sizeof(WDOG_Obj));
     myPwm1 = PWM_init((void *)PWM_ePWM1_BASE_ADDR, sizeof(PWM_Obj));
     myPwm2 = PWM_init((void *)PWM_ePWM2_BASE_ADDR, sizeof(PWM_Obj));
     WDOG_disable(myWDog);
     CLK_setOscSrc(myClk, CLK_OscSrc_Internal);
     PLL_setup(myPll, PLL_Multiplier_12, PLL_DivideSelect_ClkIn_by_2);

     // Initalize GPIO
     GPIO_setPullUp(myGpio, GPIO_Number_28, GPIO_PullUp_Enable);
     GPIO_setPullUp(myGpio, GPIO_Number_29, GPIO_PullUp_Disable);
     GPIO_setQualification(myGpio, GPIO_Number_28, GPIO_Qual_ASync);
     GPIO_setMode(myGpio, GPIO_Number_28, GPIO_28_Mode_SCIRXDA);
     GPIO_setMode(myGpio, GPIO_Number_29, GPIO_29_Mode_SCITXDA);

     scia_intpt_en();
     scia_init();
     send_msg();

     GPIO_setMode(myGpio, GPIO_Number_0, GPIO_0_Mode_EPWM1A);
     GPIO_setMode(myGpio, GPIO_Number_1, GPIO_1_Mode_EPWM1B);
     GPIO_setMode(myGpio, GPIO_Number_2, GPIO_2_Mode_EPWM2A);
     GPIO_setMode(myGpio, GPIO_Number_3, GPIO_3_Mode_EPWM2B);
     CLK_disableTbClockSync(myClk);
     pwm_Init_();
     CLK_enableTbClockSync(myClk);

     while(1);
}

//-------------------------- UART -----------------------------------
interrupt void sciaRxIsr(void)
{

 duty = SCI_getData(mySci);
 set_duty(c);
 if(c==3)
 {
 c=0;}
 else c++;
 PIE_clearInt(myPie, PIE_GroupNumber_9);
}

void scia_init()
{
    CLK_enableSciaClock(myClk);
    SCI_disableParity(mySci);
    SCI_setNumStopBits(mySci, SCI_NumStopBits_One);
    SCI_setCharLength(mySci, SCI_CharLength_8_Bits);
    SCI_enableRx(mySci);
    SCI_enableTx(mySci);
    SCI_enableRxInt(mySci);
    SCI_setBaudRate(mySci, SCI_BaudRate_9_6_kBaud);
    SCI_enable(mySci);
}

void scia_intpt_en()
{
 PIE_enable(myPie);
 PIE_registerPieIntHandler(myPie, PIE_GroupNumber_9, PIE_SubGroupNumber_1, (intVec_t)&sciaRxIsr);
 PIE_enableInt(myPie, PIE_GroupNumber_9, PIE_InterruptSource_SCIARX);
 CPU_enableInt(myCpu, CPU_IntNumber_9);
 CPU_enableGlobalInts(myCpu);  // Enable Global Interrupts
}

void scia_xmit(int a)
{
    while(SCI_getTxFifoStatus(mySci) != SCI_FifoStatus_Empty);  //while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SCI_putDataBlocking(mySci, a);  // SciaRegs.SCITXBUF=a;
}

void send_msg()
{
 int i=0;
 while(msg[i]!='\0')
 {
  scia_xmit(msg[i]);
  i++;
 }
}
//--------------------------------- PWM ------------------------------------

void pwm_Init_()
{
    CLK_enablePwmClock(myClk, PWM_Number_1);
    CLK_enablePwmClock(myClk, PWM_Number_2);
    // Setup TBCLK
    PWM_setPeriod(myPwm1, TBPRD);   // Set timer period 801 TBCLKs
    PWM_setPhase(myPwm1, 0x0000);   // Phase is 0
    PWM_setCount(myPwm1, 0x0000);   // Clear counter
    PWM_setCounterMode(myPwm1, PWM_CounterMode_UpDown); // Count up and down
        PWM_disableCounterLoad(myPwm1);                     // Disable phase loading
         PWM_setHighSpeedClkDiv(myPwm1, PWM_HspClkDiv_by_10); // Clock ratio to SYSCLKOUT
       PWM_setClkDiv(myPwm1, PWM_ClkDiv_by_4);
       PWM_setShadowMode_CmpA(myPwm1, PWM_ShadowMode_Shadow);
         PWM_setLoadMode_CmpA(myPwm1, PWM_LoadMode_Zero);
         PWM_setShadowMode_CmpB(myPwm1, PWM_ShadowMode_Shadow);
            PWM_setLoadMode_CmpB(myPwm1, PWM_LoadMode_Zero);
            PWM_setActionQual_CntUp_CmpA_PwmA(myPwm1, PWM_ActionQual_Clear);      // Set PWM1A on event A, up count
               PWM_setActionQual_CntDown_CmpA_PwmA(myPwm1, PWM_ActionQual_Set);  // Clear PWM1A on event A, down count
               PWM_setActionQual_CntUp_CmpB_PwmB(myPwm1, PWM_ActionQual_Clear);      // Set PWM1A on event A, up count
                   PWM_setActionQual_CntDown_CmpB_PwmB(myPwm1, PWM_ActionQual_Set);  // Clear PWM1A on event A, down count

    PWM_setPeriod(myPwm2, TBPRD);   // Set timer period 801 TBCLKs
       PWM_setPhase(myPwm2, 0x0000);   // Phase is 0
       PWM_setCount(myPwm2, 0x0000);   // Clear counter
     // Set Compare values for duty cycle
   // set_duty();
    // Setup counter mode

    PWM_setCounterMode(myPwm2, PWM_CounterMode_UpDown); // Count up and down
        PWM_disableCounterLoad(myPwm2);                     // Disable phase loading
         PWM_setHighSpeedClkDiv(myPwm2, PWM_HspClkDiv_by_10); // Clock ratio to SYSCLKOUT
       PWM_setClkDiv(myPwm2, PWM_ClkDiv_by_4);
    // Setup shadowing

       PWM_setShadowMode_CmpA(myPwm2, PWM_ShadowMode_Shadow);
          PWM_setLoadMode_CmpA(myPwm2, PWM_LoadMode_Zero);
          PWM_setShadowMode_CmpB(myPwm2, PWM_ShadowMode_Shadow);
             PWM_setLoadMode_CmpB(myPwm2, PWM_LoadMode_Zero);
    // Set actions
       PWM_setActionQual_CntUp_CmpA_PwmA(myPwm2, PWM_ActionQual_Clear);      // Set PWM1A on event A, up count
           PWM_setActionQual_CntDown_CmpA_PwmA(myPwm2, PWM_ActionQual_Set);  // Clear PWM1A on event A, down count
           PWM_setActionQual_CntUp_CmpB_PwmB(myPwm2, PWM_ActionQual_Clear);      // Set PWM1A on event A, up count
               PWM_setActionQual_CntDown_CmpB_PwmB(myPwm2, PWM_ActionQual_Set);  // Clear PWM1A on event A, down count
}
// Some useful Period vs Frequency values
//  SYSCLKOUT =     60 MHz       40 MHz
//  --------------------------------------
//    Period            Frequency    Frequency
//    1000            60 kHz       40 kHz
//    800                75 kHz       50 kHz
//    600                100 kHz      67 kHz
//    500                120 kHz      80 kHz
//    250                240 kHz      160 kHz
//    200                300 kHz      200 kHz
//    100                600 kHz      400 kHz
//    50                1.2 Mhz      800 kHz
//    25                2.4 Mhz      1.6 MHz
//    20                3.0 Mhz      2.0 MHz
//    12                5.0 MHz      3.3 MHz
//    10                6.0 MHz      4.0 MHz
//    9                6.7 MHz      4.4 MHz
//    8                7.5 MHz      5.0 MHz
//    7                8.6 MHz      5.7 MHz
//    6                10.0 MHz     6.6 MHz
//    5                12.0 MHz     8.0 MHz

void set_duty(int x)
{

 CMPA = (duty*256);
 if(x==0)
 {
 PWM_setCmpA(myPwm1, CMPA);
 }// Set compare A value
 else if(x==1)
 {
 PWM_setCmpB(myPwm1, CMPA);
  }
 else if(x==2)
  {
  PWM_setCmpA(myPwm2, CMPA);
   }
 else if(x==3)
  {
  PWM_setCmpB(myPwm2, CMPA);
   }
}