⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo1103_io_ad_pwm3_v7.c

📁 代码由matlab自动生成
💻 C
📖 第 1 页 / 共 2 页
字号:

      /* Sum: '<S8>/Sum2' */
      Demo1103_IO_AD_PWM3_V7_B.Sum2 = Demo1103_IO_AD_PWM3_V7_B.I +
        Demo1103_IO_AD_PWM3_V7_B.k_p;

      /* Gain: '<S8>/f_k_i' */
      Demo1103_IO_AD_PWM3_V7_B.f_k_i = Demo1103_IO_AD_PWM3_V7_P.f_k_i_Gain *
        Demo1103_IO_AD_PWM3_V7_B.Switch_a;

      /* Gain: '<S9>/Slider Gain' incorporates:
       *  Constant: '<S3>/Duty_in_c'
       */
      Demo1103_IO_AD_PWM3_V7_B.SliderGain_k =
        Demo1103_IO_AD_PWM3_V7_P.SliderGain_Gain_c *
        Demo1103_IO_AD_PWM3_V7_P.Duty_in_c_Value;

      /* Saturate: '<S3>/Saturation3' */
      rtsaturate_U0DataInY0Container = rt_SATURATE
        (Demo1103_IO_AD_PWM3_V7_B.SliderGain_k,
         Demo1103_IO_AD_PWM3_V7_P.Saturation3_LowerSat,
         Demo1103_IO_AD_PWM3_V7_P.Saturation3_UpperSat);
      Demo1103_IO_AD_PWM3_V7_B.Saturation3 = rtsaturate_U0DataInY0Container;
    }

    /* DiscreteTransferFcn Block: '<S8>/PT2' */
    {
      Demo1103_IO_AD_PWM3_V7_DWork.PT2_DSTATE = Demo1103_IO_AD_PWM3_V7_B.Sum3 +
        Demo1103_IO_AD_PWM3_V7_P.PT2_A*Demo1103_IO_AD_PWM3_V7_DWork.PT2_DSTATE;
    }

    /* DiscreteTransferFcn Block: '<S8>/PT1' */
    {
      Demo1103_IO_AD_PWM3_V7_DWork.PT1_DSTATE = Demo1103_IO_AD_PWM3_V7_B.Sum2 +
        Demo1103_IO_AD_PWM3_V7_P.PT1_A*Demo1103_IO_AD_PWM3_V7_DWork.PT1_DSTATE;
    }

    /* DiscreteTransferFcn Block: '<S8>/DT1' */
    {
      Demo1103_IO_AD_PWM3_V7_DWork.DT1_DSTATE = Demo1103_IO_AD_PWM3_V7_B.f_k_d +
        Demo1103_IO_AD_PWM3_V7_P.DT1_A*Demo1103_IO_AD_PWM3_V7_DWork.DT1_DSTATE;
    }

    /* DiscreteTransferFcn Block: '<S8>/DT2' */
    {
      Demo1103_IO_AD_PWM3_V7_DWork.DT2_DSTATE = Demo1103_IO_AD_PWM3_V7_B.f_k_d1
        + Demo1103_IO_AD_PWM3_V7_P.DT2_A*Demo1103_IO_AD_PWM3_V7_DWork.DT2_DSTATE;
    }

    /* DiscreteTransferFcn Block: '<S8>/I' */
    {
      Demo1103_IO_AD_PWM3_V7_DWork.I_DSTATE = Demo1103_IO_AD_PWM3_V7_B.f_k_i +
        Demo1103_IO_AD_PWM3_V7_P.I_A*Demo1103_IO_AD_PWM3_V7_DWork.I_DSTATE;
    }
  }

  /* S-Function Block: <Root>/PWM2 (c28xpwm) */
  {
    EvaRegs.CMPR1 = (uint16_T) ((EvaRegs.T1PR / 100) *
      Demo1103_IO_AD_PWM3_V7_B.toggle1);
    EvaRegs.CMPR2 = (uint16_T) ((EvaRegs.T1PR / 100) *
      Demo1103_IO_AD_PWM3_V7_B.toggle2);
  }

  /* S-Function Block: <Root>/ADC (c28xadc) */
  {
    AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;// Sequencer reset
    AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1;// Software start of conversion
    asm("    nop" );
    asm("    nop" );
    asm("    nop" );
    asm("    nop" );
    while (AdcRegs.ADCST.bit.SEQ1_BSY==0x1) {
    }                                  //Wait for Sequencer Busy bit to clear

    Demo1103_IO_AD_PWM3_V7_B.ADC = (AdcRegs.ADCRESULT0) >> 4;
    AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;// Sequencer reset
    AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;// Clear INT SEQ1 bit
  }

  /* Gain: '<Root>/Gain' */
  Demo1103_IO_AD_PWM3_V7_B.Gain_a = (uint32_T)
    Demo1103_IO_AD_PWM3_V7_P.Gain_Gain_k * (uint32_T)
    Demo1103_IO_AD_PWM3_V7_B.ADC;

  /* DataTypeConversion: '<Root>/Data Type Conversion2' */
  Demo1103_IO_AD_PWM3_V7_B.DataTypeConversion2 = ldexp((real_T)
    Demo1103_IO_AD_PWM3_V7_B.Gain_a, (int16_T)-12L);

  /* Memory: '<S5>/Memory' */
  Demo1103_IO_AD_PWM3_V7_B.Memory =
    Demo1103_IO_AD_PWM3_V7_DWork.Memory_PreviousInput;

  /* Gain: '<S5>/Gain' */
  Demo1103_IO_AD_PWM3_V7_B.Gain = Demo1103_IO_AD_PWM3_V7_P.Gain_Gain *
    Demo1103_IO_AD_PWM3_V7_B.Memory;

  /* Gain: '<S5>/Gain1' */
  Demo1103_IO_AD_PWM3_V7_B.Gain1 = Demo1103_IO_AD_PWM3_V7_P.Gain1_Gain *
    Demo1103_IO_AD_PWM3_V7_B.Memory1;

  /* RelationalOperator: '<S5>/Relational Operator' incorporates:
   *  Constant: '<S2>/Constant'
   */
  Demo1103_IO_AD_PWM3_V7_B.RelationalOperator =
    (Demo1103_IO_AD_PWM3_V7_B.Memory1 >= Demo1103_IO_AD_PWM3_V7_P.Constant_Value);

  /* Switch: '<S5>/Switch' incorporates:
   *  Constant: '<S5>/Constant1'
   */
  if (Demo1103_IO_AD_PWM3_V7_B.RelationalOperator) {
    Demo1103_IO_AD_PWM3_V7_B.Switch = Demo1103_IO_AD_PWM3_V7_B.Gain1;
  } else {
    Demo1103_IO_AD_PWM3_V7_B.Switch = Demo1103_IO_AD_PWM3_V7_P.Constant1_Value_b;
  }

  /* Sum: '<S5>/Sum' incorporates:
   *  Constant: '<S5>/Constant'
   */
  Demo1103_IO_AD_PWM3_V7_B.Sum = (Demo1103_IO_AD_PWM3_V7_B.Switch +
    Demo1103_IO_AD_PWM3_V7_P.Constant_Value_h) +
    Demo1103_IO_AD_PWM3_V7_B.Memory1;

  /* DiscreteFilter Block: '<S4>/Discrete Filter'
   */
  Demo1103_IO_AD_PWM3_V7_B.DiscreteFilter =
    Demo1103_IO_AD_PWM3_V7_P.DiscreteFilter_D*
    Demo1103_IO_AD_PWM3_V7_B.DataTypeConversion2;
  Demo1103_IO_AD_PWM3_V7_B.DiscreteFilter +=
    Demo1103_IO_AD_PWM3_V7_P.DiscreteFilter_C*
    Demo1103_IO_AD_PWM3_V7_DWork.DiscreteFilter_DSTATE;

  /* Update for Memory: '<S5>/Memory1' */
  Demo1103_IO_AD_PWM3_V7_DWork.Memory1_PreviousInput =
    Demo1103_IO_AD_PWM3_V7_B.Sum;

  /* Update for Memory: '<S5>/Memory' */
  Demo1103_IO_AD_PWM3_V7_DWork.Memory_PreviousInput =
    Demo1103_IO_AD_PWM3_V7_B.Gain;

  /* DiscreteFilter Block: '<S4>/Discrete Filter' */
  {
    Demo1103_IO_AD_PWM3_V7_DWork.DiscreteFilter_DSTATE =
      Demo1103_IO_AD_PWM3_V7_B.DataTypeConversion2 +
      (Demo1103_IO_AD_PWM3_V7_P.DiscreteFilter_A)*
      Demo1103_IO_AD_PWM3_V7_DWork.DiscreteFilter_DSTATE;
  }
}

/* Model initialize function */
void Demo1103_IO_AD_PWM3_V7_initialize(boolean_T firstTime)
{
  (void)firstTime;

  /* Registration code */

  /* initialize error status */
  rtmSetErrorStatus(Demo1103_IO_AD_PWM3_V7_M, (const char_T *)0);

  /* block I/O */
  (void) memset(((void *) &Demo1103_IO_AD_PWM3_V7_B),0,
                sizeof(BlockIO_Demo1103_IO_AD_PWM3_V7));

  {
    int_T i;
    void *pVoidBlockIORegion;
    pVoidBlockIORegion = (void *)(&Demo1103_IO_AD_PWM3_V7_B.Memory1);
    for (i = 0; i < 9; i++) {
      ((real_T*)pVoidBlockIORegion)[i] = 0.0;
    }

    pVoidBlockIORegion = (void *)(&Demo1103_IO_AD_PWM3_V7_B.PT2);
    for (i = 0; i < 31; i++) {
      ((real_T*)pVoidBlockIORegion)[i] = 0.0;
    }
  }

  /* states (dwork) */
  (void) memset((char_T *) &Demo1103_IO_AD_PWM3_V7_DWork,0,
                sizeof(D_Work_Demo1103_IO_AD_PWM3_V7));

  {
    int_T i;
    real_T *dwork_ptr = (real_T *)
      &Demo1103_IO_AD_PWM3_V7_DWork.DiscreteFilter_DSTATE;
    for (i = 0; i < 9; i++) {
      dwork_ptr[i] = 0.0;
    }
  }

  EALLOW;
  GpioMuxRegs.GPAMUX.all = 0x00FF;     // EVA PWM 1-6  pins
  config_PWM_A (3750.0,1,1,"INPUT_PORT",0.0,
                1,"INPUT_PORT",0.0,0,"SPECIFY_VIA_DIALOG",0.0,1638,
                0, 0, 0, 0, 1, 0);
  EDIS;
  InitAdc();
  config_ADC_A (0U, 0U, 0U, 0U, 0U);

  /* Start for DataStoreMemory: '<Root>/Data Store Memory' */
  Demo1103_IO_AD_PWM3_V7_DWork.Flag_data =
    Demo1103_IO_AD_PWM3_V7_P.DataStoreMemory_InitialVal;

  /* InitializeConditions for Memory: '<S5>/Memory1' */
  Demo1103_IO_AD_PWM3_V7_DWork.Memory1_PreviousInput =
    Demo1103_IO_AD_PWM3_V7_P.Memory1_X0;

  /* InitializeConditions for Memory: '<S5>/Memory' */
  Demo1103_IO_AD_PWM3_V7_DWork.Memory_PreviousInput =
    Demo1103_IO_AD_PWM3_V7_P.Memory_X0;
}

/* Model terminate function */
void Demo1103_IO_AD_PWM3_V7_terminate(void)
{
  /* (no terminate code required) */
}

/* File trailer for Real-Time Workshop generated code.
 *
 * [EOF]
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -