Hi, I have a problem with sine wave generated using simulink. I use DSP sine wave block from Signal Processing Blockset of simulink to generate discrete sine wave with the following setting:
Amplitude: [0.7*4 0.7*4 0.7*4]
Frequency: [50 50 50]
Phase offset: [0 4*pi/3 2*pi/3]
Sample Time: 1/1000
Sample per frame: 1
I attach snapshot part of my simulink model. I observed variable "va" which is refer to output of sine wave in the figure. Based on the setting of the sine wave source, "va" should be 50 Hz which is 0.02s/cycle. The problem here is "va" frequency is 0.4Hz which is 2.5s/cycle and should be 50Hz. Then to verify this problem, I complete the simulink block by producing signal low and high at digital output of the eZDSP at every cycle of sine wave.
This is the code generated from Simulink (e2etiQ1.c):
/* * File: e2etiQ1.c * * Real-Time Workshop code generated for Simulink model e2etiQ1. * * Model version : 1.95 * Real-Time Workshop file version : 7.4 (R2009b) 29-Jun-2009 * Real-Time Workshop file generated on : Wed Nov 13 16:30:09 2013 * TLC version : 7.4 (Jul 14 2009) * C/C++ source code generated on : Wed Nov 13 16:30:10 2013 * * Target selection: ccslink_ert.tlc * Embedded hardware selection: Texas Instruments->C2000 * Code generation objectives: Unspecified * Validation result: Not run */ #include "e2etiQ1.h" #include "e2etiQ1_private.h" /* Block signals (auto storage) */ BlockIO_e2etiQ1 e2etiQ1_B; /* Block states (auto storage) */ D_Work_e2etiQ1 e2etiQ1_DWork; /* Real-time model */ RT_MODEL_e2etiQ1 e2etiQ1_M_; RT_MODEL_e2etiQ1 *e2etiQ1_M = &e2etiQ1_M_; static void rate_scheduler(void); /* * This function updates active task flag for each subrate. * The function must be called at model base rate, hence the * generated code self-manages all its subrates. */ static void rate_scheduler(void) { /* Compute which subrates run during the next base time step. Subrates * are an integer multiple of the base rate counter. Therefore, the subtask * counter is reset when it reaches its limit (zero means run). */ if (++(e2etiQ1_M->Timing.TaskCounters.TID[1]) > 999) {/* Sample time: [0.001s, 0.0s] */ e2etiQ1_M->Timing.TaskCounters.TID[1] = 0; } } /* Model step function */ void e2etiQ1_step(int_T tid) { { real32_T rtb_ComplextoMagnitudeAngle_o1; real32_T rtb_Gain3; real32_T rtb_thet; if (e2etiQ1_M->Timing.TaskCounters.TID[1] == 0) { /* S-Function (sdspsine2): '<Root>/Sine Wave' */ e2etiQ1_B.SineWave[0] = e2etiQ1_ConstP.SineWave_Values_Sine[(int32_T) e2etiQ1_DWork.SineWave_TableIdx[0]]; e2etiQ1_DWork.SineWave_TableIdx[0] = e2etiQ1_DWork.SineWave_TableIdx[0] + 1U; if (e2etiQ1_DWork.SineWave_TableIdx[0] >= 20U) { e2etiQ1_DWork.SineWave_TableIdx[0] = 0U; } e2etiQ1_B.SineWave[1] = e2etiQ1_ConstP.SineWave_Values_Sine[20L + (int32_T) e2etiQ1_DWork.SineWave_TableIdx[1]]; e2etiQ1_DWork.SineWave_TableIdx[1] = e2etiQ1_DWork.SineWave_TableIdx[1] + 1U; if (e2etiQ1_DWork.SineWave_TableIdx[1] >= 20U) { e2etiQ1_DWork.SineWave_TableIdx[1] = 0U; } e2etiQ1_B.SineWave[2] = e2etiQ1_ConstP.SineWave_Values_Sine[40L + (int32_T) e2etiQ1_DWork.SineWave_TableIdx[2]]; e2etiQ1_DWork.SineWave_TableIdx[2] = e2etiQ1_DWork.SineWave_TableIdx[2] + 1U; if (e2etiQ1_DWork.SineWave_TableIdx[2] >= 20U) { e2etiQ1_DWork.SineWave_TableIdx[2] = 0U; } /* DataTypeConversion: '<Root>/Data Type Conversion2' */ e2etiQ1_B.va = e2etiQ1_B.SineWave[0]; } /* RealImagToComplex: '<S2>/Real-Imag to Complex' incorporates: * Gain: '<S2>/Gain1' * Gain: '<S2>/Gain2' * SignalConversion: '<S2>/TmpSignal ConversionAtGain1Inport1' */ rtb_Gain3 = (e2etiQ1_P.Gain1_Gain[0] * e2etiQ1_B.va + e2etiQ1_P.Gain1_Gain[1] * e2etiQ1_B.SineWave[1]) + e2etiQ1_P.Gain1_Gain[2] * e2etiQ1_B.SineWave[2]; rtb_thet = (e2etiQ1_P.Gain2_Gain[0] * e2etiQ1_B.va + e2etiQ1_P.Gain2_Gain[1] * e2etiQ1_B.SineWave[1]) + e2etiQ1_P.Gain2_Gain[2] * e2etiQ1_B.SineWave[2]; /* ComplexToMagnitudeAngle: '<S2>/Complex to Magnitude-Angle' */ rtb_ComplextoMagnitudeAngle_o1 = rt_hypot32_snf(rtb_Gain3, rtb_thet); /* Gain: '<S2>/Gain3' */ rtb_Gain3 = e2etiQ1_P.Gain3_Gain * rt_atan232_snf(rtb_thet, rtb_Gain3); /* Embedded MATLAB: '<S2>/3' */ /* Embedded MATLAB Function 'abc -> mag + local theta2/3': '<S4>:1' */ /* equations used in this mathlab function is based on Table I "A novel */ /* Neutral point stabilization technique using the information of output */ /* current polarities and voltage vector'by Katsutoshi Yamanaka, IEEE */ /* Industrial Application 2002 */ if ((real_T)rtb_Gain3 >= 150.0) { /* '<S4>:1:10' */ /* '<S4>:1:11' */ rtb_thet = rtb_Gain3 - 120.0F; } else if ((real_T)rtb_Gain3 < -150.0) { /* '<S4>:1:13' */ /* '<S4>:1:14' */ rtb_thet = rtb_Gain3 + 240.0F; } else { /* '<S4>:1:19' */ rtb_thet = 0.0F; } /* Product: '<S2>/Product5' incorporates: * Constant: '<S2>/Constant5' * Constant: '<S7>/Constant' * Constant: '<S8>/Constant' * Logic: '<S2>/Logical Operator5' * RelationalOperator: '<S7>/Compare' * RelationalOperator: '<S8>/Compare' */ e2etiQ1_B.Product5 = (rtb_Gain3 >= e2etiQ1_P.Constant_Value_g) && (rtb_Gain3 < e2etiQ1_P.Constant_Value_j) ? e2etiQ1_P.Constant5_Value : 0.0; /* Sum: '<S2>/Sum' incorporates: * Constant: '<S10>/Constant' * Constant: '<S11>/Constant' * Constant: '<S12>/Constant' * Constant: '<S13>/Constant' * Constant: '<S14>/Constant' * Constant: '<S15>/Constant' * Constant: '<S16>/Constant' * Constant: '<S17>/Constant' * Constant: '<S18>/Constant' * Constant: '<S2>/Constant' * Constant: '<S2>/Constant1' * Constant: '<S2>/Constant2' * Constant: '<S2>/Constant3' * Constant: '<S2>/Constant4' * Constant: '<S5>/Constant' * Constant: '<S6>/Constant' * Constant: '<S9>/Constant' * Logic: '<S2>/Logical Operator' * Logic: '<S2>/Logical Operator1' * Logic: '<S2>/Logical Operator2' * Logic: '<S2>/Logical Operator3' * Logic: '<S2>/Logical Operator4' * Logic: '<S2>/Logical Operator6' * Logic: '<S2>/Logical Operator7' * Product: '<S2>/Product' * Product: '<S2>/Product1' * Product: '<S2>/Product2' * Product: '<S2>/Product3' * Product: '<S2>/Product4' * RelationalOperator: '<S10>/Compare' * RelationalOperator: '<S11>/Compare' * RelationalOperator: '<S12>/Compare' * RelationalOperator: '<S13>/Compare' * RelationalOperator: '<S14>/Compare' * RelationalOperator: '<S15>/Compare' * RelationalOperator: '<S16>/Compare' * RelationalOperator: '<S17>/Compare' * RelationalOperator: '<S18>/Compare' * RelationalOperator: '<S5>/Compare' * RelationalOperator: '<S6>/Compare' * RelationalOperator: '<S9>/Compare' */ e2etiQ1_B.sektor = (real_T)((((((real32_T)((rtb_Gain3 >= e2etiQ1_P.Constant_Value_h) && (rtb_Gain3 < e2etiQ1_P.Constant_Value_c) ? e2etiQ1_P.Constant_Value : 0.0) + (real32_T)((rtb_Gain3 >= e2etiQ1_P.Constant_Value_n) && (rtb_Gain3 < e2etiQ1_P.Constant_Value_f) ? e2etiQ1_P.Constant1_Value : 0.0)) + (real32_T)(((rtb_Gain3 >= e2etiQ1_P.Constant_Value_o) && (rtb_Gain3 <= e2etiQ1_P.Constant_Value_k)) || ((rtb_Gain3 >= e2etiQ1_P.Constant_Value_cd) && (rtb_Gain3 < e2etiQ1_P.Constant_Value_cq)) ? e2etiQ1_P.Constant2_Value : 0.0)) + (real32_T)((rtb_Gain3 >= e2etiQ1_P.Constant_Value_l) && (rtb_Gain3 < e2etiQ1_P.Constant_Value_hz) ? e2etiQ1_P.Constant3_Value : 0.0)) + (real32_T)((rtb_Gain3 >= e2etiQ1_P.Constant_Value_a) && (rtb_Gain3 < e2etiQ1_P.Constant_Value_e) ? e2etiQ1_P.Constant4_Value : 0.0)) + (real32_T)e2etiQ1_B.Product5); /* MultiPortSwitch: '<S2>/Multiport Switch' incorporates: * Fcn: '<S2>/1' * Fcn: '<S2>/2' * Fcn: '<S2>/4' * Fcn: '<S2>/5' * Fcn: '<S2>/6' */ switch ((int16_T)e2etiQ1_B.sektor) { case 1: e2etiQ1_B.MultiportSwitch = rtb_Gain3; break; case 2: e2etiQ1_B.MultiportSwitch = rtb_Gain3 - 60.0F; break; case 3: e2etiQ1_B.MultiportSwitch = rtb_thet; break; case 4: e2etiQ1_B.MultiportSwitch = rtb_Gain3 + 180.0F; break; case 5: e2etiQ1_B.MultiportSwitch = rtb_Gain3 + 120.0F; break; default: e2etiQ1_B.MultiportSwitch = rtb_Gain3 + 60.0F; break; } /* Fcn: '<S3>/V_alfa' */ e2etiQ1_B.V_alfa = (real32_T)cos(e2etiQ1_B.MultiportSwitch * 3.141592741F / 180.0F) * rtb_ComplextoMagnitudeAngle_o1; /* Fcn: '<S3>/V_beta' */ e2etiQ1_B.V_beta = (real32_T)sin(e2etiQ1_B.MultiportSwitch * 3.141592741F / 180.0F) * rtb_ComplextoMagnitudeAngle_o1; /* Embedded MATLAB: '<S3>/Embedded MATLAB Function' */ /* Embedded MATLAB Function 'local vector gen.2/Embedded MATLAB Function': '<S19>:1' */ /* equations used in this mathlab function is based on Table I "A novel */ /* Neutral point stabilization technique using the information of output */ /* current polarities and voltage vector'by Katsutoshi Yamanaka, IEEE */ /* Indubestrial Application 2002 */ if (((real_T)e2etiQ1_B.V_alfa < 1.7320508075688772E+000) && ((real_T) e2etiQ1_B.V_beta < 2.0)) { /* '<S19>:1:9' */ /* '<S19>:1:12' */ if (e2etiQ1_B.V_beta > (-e2etiQ1_B.V_alfa) / 1.732050776E+000F + 2.0F) { /* '<S19>:1:14' */ /* '<S19>:1:15' */ e2etiQ1_B.tr = 3.0F; } else { /* '<S19>:1:18' */ e2etiQ1_B.tr = 1.0F; } } else if (((real_T)e2etiQ1_B.V_alfa < 1.7320508075688772E+000) && ((real_T) e2etiQ1_B.V_beta >= 2.0)) { /* '<S19>:1:22' */ /* '<S19>:1:24' */ if (e2etiQ1_B.V_beta > e2etiQ1_B.V_alfa / 1.732050776E+000F + 2.0F) { /* '<S19>:1:27' */ /* '<S19>:1:28' */ e2etiQ1_B.tr = 4.0F; } else { /* '<S19>:1:30' */ e2etiQ1_B.tr = 3.0F; } } else if ((real_T)e2etiQ1_B.V_alfa >= 1.7320508075688772E+000) { /* '<S19>:1:34' */ /* '<S19>:1:35' */ e2etiQ1_B.tr = 2.0F; } else { /* '<S19>:1:40' */ e2etiQ1_B.tr = 0.0F; } } /* Update absolute time for base rate */ /* The "clockTick0" counts the number of times the code of this task has * been executed. The resolution of this integer timer is 1.0E-006, which is the step size * of the task. Size of "clockTick0" ensures timer will not overflow during the * application lifespan selected. * Timer of this task consists of two 32 bit unsigned integers. * The two integers represent the low bits Timing.clockTick0 and the high bits * Timing.clockTickH0. When the low bit overflows to 0, the high bits increment. */ e2etiQ1_M->Timing.clockTick0++; if (!e2etiQ1_M->Timing.clockTick0) e2etiQ1_M->Timing.clockTickH0++; rate_scheduler(); /* tid is required for a uniform function interface. * Argument tid is not used in the function. */ UNUSED_PARAMETER(tid); } /* Model initialize function */ void e2etiQ1_initialize(boolean_T firstTime) { (void)firstTime; /* Registration code */ /* initialize non-finites */ rt_InitInfAndNaN(sizeof(real_T)); /* initialize real-time model */ (void) memset((void *)e2etiQ1_M,0, sizeof(RT_MODEL_e2etiQ1)); /* block I/O */ (void) memset(((void *) &e2etiQ1_B),0, sizeof(BlockIO_e2etiQ1)); /* states (dwork) */ (void) memset((void *)&e2etiQ1_DWork, 0, sizeof(D_Work_e2etiQ1)); /* Start for S-Function (sdspsine2): '<Root>/Sine Wave' */ /* Full-cycle Table lookup */ e2etiQ1_DWork.SineWave_TableIdx[0] = 0U; e2etiQ1_DWork.SineWave_TableIdx[1] = 0U; e2etiQ1_DWork.SineWave_TableIdx[2] = 0U; { real32_T currSampTime; /* InitializeConditions for S-Function (sdspsine2): '<Root>/Sine Wave' */ /* This code only executes when block is re-enabled in an enabled subsystem when the enabled subsystem states on re-enabling are set to 'Reset' */ /* Catch up to present time on re-enable */ /* Full-cycle Table lookup */ currSampTime = (real32_T)(((e2etiQ1_M->Timing.clockTick0+ e2etiQ1_M->Timing.clockTickH0* 4294967296.0)) * 1.0E-006); e2etiQ1_DWork.SineWave_TableIdx[0] = (uint16_T)((uint32_T)(currSampTime / 1.000000047E-003F + 0.5F) % (uint32_T)20U); e2etiQ1_DWork.SineWave_TableIdx[1] = (uint16_T)((uint32_T)(currSampTime / 1.000000047E-003F + 0.5F) % (uint32_T)20U); e2etiQ1_DWork.SineWave_TableIdx[2] = (uint16_T)((uint32_T)(currSampTime / 1.000000047E-003F + 0.5F) % (uint32_T)20U); } } /* Model terminate function */ void e2etiQ1_terminate(void) { /* (no terminate code required) */ } /* * File trailer for Real-Time Workshop generated code. * * [EOF] */
and another file generated by Simulink (MW_c28xx_cls.c):
#include "DSP2833x_Device.h" #include "DSP2833x_GlobalPrototypes.h" #include "rtwtypes.h" #include "e2etiQ1.h" #include "e2etiQ1_private.h" void rt_OneStep(void); /*----------------------------------------------------------------------------- * void config_schedulerTimer(void) * * Abstract: * This function configures scheduler timer */ void config_schedulerTimer(void) { InitCpuTimers(); /* Configure CPU-Timer 0 to interrupt every 1.0E-006 sec. */ /* Parameters: Timer Pointer, CPU Freq in MHz, Period in usec. */ ConfigCpuTimer(&CpuTimer0, 150.0, 1.0E-006 * 1000000); StartCpuTimer0(); } void disableWatchdog(void) { int *WatchdogWDCR = (void *) 0x7029; asm(" EALLOW "); *WatchdogWDCR = 0x0068; asm(" EDIS "); } interrupt void TINT0_isr(void) { volatile unsigned int PIEIER1_stack_save = PieCtrlRegs.PIEIER1.all; PieCtrlRegs.PIEIER1.all &= ~64; //disable group1 lower/equal priority interrupts asm(" RPT #5 || NOP"); //wait 5 cycles IFR &= ~1; //eventually disable lower/equal priority pending interrupts PieCtrlRegs.PIEACK.all = 1; //ACK to allow other interrupts from the same group to fire IER |= 1; EINT; //global interrupt enable rt_OneStep(); DINT; // disable global interrupts during context switch, CPU will enable global interrupts after exiting ISR PieCtrlRegs.PIEIER1.all = PIEIER1_stack_save;//restore PIEIER register that was modified } void enable_interrupts() { EALLOW; PieVectTable.TINT0 = &TINT0_isr; // Hook interrupt to the ISR EDIS; PieCtrlRegs.PIEIER1.bit.INTx7 = 1; // Enable interrupt TINT0 IER |= M_INT1; // Enable global Interrupts and higher priority real-time debug events: EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM } void disable_interrupts() { IER &= M_INT1; // Disable Global INT1 (CPU Interrupt 1) DINT; // Disable Global interrupt INTM } void init_board () { InitSysCtrl(); EALLOW; /* Perform additional configuration of the XTINF for speed up */ XintfRegs.XINTCNF2.bit.XTIMCLK = 0; // XTIMCLK=SYSCLKOUT/1 XintfRegs.XINTCNF2.bit.CLKOFF = 0; // XCLKOUT is enabled XintfRegs.XINTCNF2.bit.CLKMODE = 0; // XCLKOUT = XTIMCLK // Make sure write buffer is empty before configuring buffering depth while (XintfRegs.XINTCNF2.bit.WLEVEL != 0) ;// poll the WLEVEL bit XintfRegs.XINTCNF2.bit.WRBUFF = 0; // No write buffering // Example: Assume Zone 7 is slow, so add additional BCYC cycles whenever // switching from Zone 7 to another Zone. This will help avoid bus contention. XintfRegs.XBANK.bit.BCYC = 3; // Add 7 cycles XintfRegs.XBANK.bit.BANK = 3; // select zone 7 /* Zone 0 Configuration */ XintfRegs.XTIMING0.bit.X2TIMING = 0; // Timing scale factor = 1 XintfRegs.XTIMING0.bit.XSIZE = 3; // Always write as 11b XintfRegs.XTIMING0.bit.READYMODE = 1;// XREADY is asynchronous XintfRegs.XTIMING0.bit.USEREADY = 0; // Disable XREADY XintfRegs.XTIMING0.bit.XRDLEAD = 1; // Read lead time XintfRegs.XTIMING0.bit.XRDACTIVE = 2;// Read active time XintfRegs.XTIMING0.bit.XRDTRAIL = 1; // Read trail time XintfRegs.XTIMING0.bit.XWRLEAD = 1; // Write lead time XintfRegs.XTIMING0.bit.XWRACTIVE = 2;// Write active time XintfRegs.XTIMING0.bit.XWRTRAIL = 1; // Write trail time /* Zone 6 Configuration */ XintfRegs.XTIMING6.bit.X2TIMING = 0; // Timing scale factor = 1 XintfRegs.XTIMING6.bit.XSIZE = 3; // Always write as 11b XintfRegs.XTIMING6.bit.READYMODE = 1;// XREADY is asynchronous XintfRegs.XTIMING6.bit.USEREADY = 0; // Disable XREADY XintfRegs.XTIMING6.bit.XRDLEAD = 1; // Read lead time XintfRegs.XTIMING6.bit.XRDACTIVE = 2;// Read active time XintfRegs.XTIMING6.bit.XRDTRAIL = 1; // Read trail time XintfRegs.XTIMING6.bit.XWRLEAD = 1; // Write lead time XintfRegs.XTIMING6.bit.XWRACTIVE = 2;// Write active time XintfRegs.XTIMING6.bit.XWRTRAIL = 1; // Write trail time /* Zone 7 Configuration */ XintfRegs.XTIMING7.bit.X2TIMING = 0; // Timing scale factor = 1 XintfRegs.XTIMING7.bit.XSIZE = 3; // Always write as 11b XintfRegs.XTIMING7.bit.READYMODE = 1;// XREADY is asynchronous XintfRegs.XTIMING7.bit.USEREADY = 0; // Disable XREADY XintfRegs.XTIMING7.bit.XRDLEAD = 1; // Read lead time XintfRegs.XTIMING7.bit.XRDACTIVE = 2;// Read active time XintfRegs.XTIMING7.bit.XRDTRAIL = 1; // Read trail time XintfRegs.XTIMING7.bit.XWRLEAD = 1; // Write lead time XintfRegs.XTIMING7.bit.XWRACTIVE = 2;// Write active time XintfRegs.XTIMING7.bit.XWRTRAIL = 1; // Write trail time EDIS; InitXintf16Gpio(); /* Flush pipeline to ensure that the write is complete. Wait to be sure. */ asm(" RPT #6 || NOP"); /* Disable and clear all CPU interrupts */ DINT; IER = 0x0000; IFR = 0x0000; InitPieCtrl(); InitPieVectTable(); /* initial SPI function.... */ InitCpuTimers(); /* initial GPIO qualification settings.... */ EALLOW; GpioCtrlRegs.GPAQSEL1.all = 0U; GpioCtrlRegs.GPAQSEL2.all = 0U; GpioCtrlRegs.GPBQSEL1.all = 0U; GpioCtrlRegs.GPBQSEL2.all = 0U; EDIS; } void InitXintf16Gpio() { EALLOW; GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3; // XD15 GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 3; // XD14 GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3; // XD13 GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 3; // XD12 GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 3; // XD11 GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 3; // XD10 GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 3; // XD19 GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 3; // XD8 GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 3; // XD7 GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3; // XD6 GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 3; // XD5 GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 3; // XD4 GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 3; // XD3 GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 3; // XD2 GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 3; // XD1 GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 3; // XD0 GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3; // XA0/XWE1n GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3; // XA1 GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3; // XA2 GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3; // XA3 GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3; // XA4 GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 3; // XA5 GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3; // XA6 GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3; // XA7 GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 3; // XA8 GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 3; // XA9 GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 3; // XA10 GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 3; // XA11 GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 3; // XA12 GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 3; // XA13 GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 3; // XA14 GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3; // XA15 GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16 GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17 GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18 GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19 GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // XRNW GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // XWE0 GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0 GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // XZCS7 GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6 EDIS; }
Simulink also create another c-files..I will place here if it will help me to solve this problem.
I think Matlab create wrong code or I don't have enough understanding to use simulink with DSP?
If the code generated can be modified to operate properly, do anyone have suggestion?
Thank you...
-madie-