123
Fork of LG by
Diff: Dither_Reg.c
- Revision:
- 129:406995a91322
- Parent:
- 112:4a96133a1311
- Child:
- 197:7a05523bf588
diff -r 1e4675a36c93 -r 406995a91322 Dither_Reg.c --- a/Dither_Reg.c Mon Apr 11 11:04:34 2016 +0000 +++ b/Dither_Reg.c Tue Apr 12 11:10:49 2016 +0000 @@ -46,7 +46,7 @@ //коэфф.деления N вибропривода (период колебаний) ВП = T_Vibro длительность импульса вибропривода>> - Device_blk.Str.VB_N = Output.Str.T_Vibro; + // Device_blk.Str.VB_N = Output.Str.T_Vibro; LPC_MCPWM->LIM0 = (Output.Str.T_Vibro*MULT_7680_12500)>>SHIFT_7680_12500;//#define SHIFT_7680_12500 15 смешение для конвертации частоты из 7680 в 12500 #if defined DITHERSIM 6565 LIM0 = (Output.Str.T_Vibro*86)>>16; @@ -323,27 +323,27 @@ void clc_Noise_regulator(void) { - int temp; + /* int temp; static uint32_t Flag = 0; static int PeriodCount = 0, Tnoise = 0; if ( PeriodCount >= Tnoise ) { PeriodCount = 0; - srand(Device_blk.Str.VB_N);// Srand(период колебаний ВП) -инициализация генератора случайных чисел с зерном (VB_N) + // srand(Device_blk.Str.VB_N);// Srand(период колебаний ВП) -инициализация генератора случайных чисел с зерном (VB_N) //заданный период ошумления - Tnoise = add( Device_blk.Str.VBN_Tzd, mult_r(Device_blk.Str.VBN_Ran, rand())); // Tnoise = Device_blk.Str.VBN_Tzd + MULT_RND_SAT( Device_blk.Str.VBN_Ran, rand() ); + // Tnoise = add( Device_blk.Str.VBN_Tzd, mult_r(Device_blk.Str.VBN_Ran, rand())); // Tnoise = Device_blk.Str.VBN_Tzd + MULT_RND_SAT( Device_blk.Str.VBN_Ran, rand() ); if ( Flag ) { //e. calculation +dF/-dF //r. расчет +dF/-dF - temp = Device_blk.Str.VBN_k; //r. 25 - заданная константа ошумления + // temp = Device_blk.Str.VBN_k; //r. 25 - заданная константа ошумления } else { - temp = -Device_blk.Str.VBN_k; + // temp = -Device_blk.Str.VBN_k; } ///Длительность импульса до ошумления - Device_blk.Str.VB_tau = add(VB_tau_Ins, (mult_r( VB_tau_Ins, temp ) << 1)); // VB_tau = VB_tau_Ins + VB_tau_Ins * temp; with saturation + // Device_blk.Str.VB_tau = add(VB_tau_Ins, (mult_r( VB_tau_Ins, temp ) << 1)); // VB_tau = VB_tau_Ins + VB_tau_Ins * temp; with saturation Saturation(Device_blk.Str.VB_tau, Device_blk.Str.VB_Tmax, Device_blk.Str.VB_Tmin); //e. checking upper and lower levels of control range //r. проверка верхнего диапазона регулирования Flag = !Flag; } else { PeriodCount++; - } + }*/ } // clc_Noise_regulator /****************************************************************************** @@ -370,21 +370,21 @@ //счетчик времени и регистр период канала 0. LPC_MCPWM->TC0 = 0;// инициализация (обнуление) таймера 0; - LPC_MCPWM->LIM0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500; //период ШИМ(Виропривода). + // LPC_MCPWM->LIM0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500; //период ШИМ(Виропривода). - LPC_MCPWM->MAT0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500; // set LPC_MCPWM->MAT0 for defineteness | установление временных интервалов - LPC_MCPWM->MAT2 = (Device_blk.Str.VB_tau*MULT_7680_12500)>>SHIFT_7680_12500; // pulse width of the PhA dither drive | (MAT) при достижении которых - LPC_MCPWM->MAT1 = ((Device_blk.Str.VB_N - Device_blk.Str.VB_tau)*MULT_7680_12500)>>SHIFT_7680_12500; // pulse width of the PhB dither drive at first time | таймером, что то происходит. + //LPC_MCPWM->MAT0 = (Device_blk.Str.VB_N*MULT_7680_12500)>>SHIFT_7680_12500; // set LPC_MCPWM->MAT0 for defineteness | установление временных интервалов + // LPC_MCPWM->MAT2 = (Device_blk.Str.VB_tau*MULT_7680_12500)>>SHIFT_7680_12500; // pulse width of the PhA dither drive | (MAT) при достижении которых + // LPC_MCPWM->MAT1 = ((Device_blk.Str.VB_N - Device_blk.Str.VB_tau)*MULT_7680_12500)>>SHIFT_7680_12500; // pulse width of the PhB dither drive at first time | таймером, что то происходит. LPC_MCPWM->DT &= ~0x3FF; //e. reset dead timer register LPC_MCPWM->INTEN_SET = 1; //e. enable lim0 interrupt LPC_MCPWM->CON_SET |= (1<<8) |1 |(1<<16); //start PWM channel 0,1,2 - VB_tau_Ins = Device_blk.Str.VB_tau; // VB_tau_Ins - внутреннее значение контура регулирования Тау + // VB_tau_Ins = Device_blk.Str.VB_tau; // VB_tau_Ins - внутреннее значение контура регулирования Тау - Output.Str.L_Vibro = Device_blk.Str.VB_tau; //to update the period and pulse duration for displaying - Output.Str.T_Vibro = Device_blk.Str.VB_N; //запись в выходной масив длительности и периуда импульсов для отображения + // Output.Str.L_Vibro = Device_blk.Str.VB_tau; //to update the period and pulse duration for displaying + // Output.Str.T_Vibro = Device_blk.Str.VB_N; //запись в выходной масив длительности и периуда импульсов для отображения return; } /****************************************************************************** @@ -400,12 +400,12 @@ { init_VibroReduce(); // расчет коэфициентов (вибро апертуры) - Device_blk.Str.VB_N = 29538; //коэфф.деления N вибропривода (период колебаний) ВП (? задается только сдесь но используется уже при вычислении Vibro_Filter_Aperture в предъидущей функции) + // Device_blk.Str.VB_N = 29538; //коэфф.деления N вибропривода (период колебаний) ВП (? задается только сдесь но используется уже при вычислении Vibro_Filter_Aperture в предъидущей функции) VibroDither_Init();// Выбор ножек для двух каналов ШИМ(1-2(Канал 0 тоже определен)),период ШИМ,режим и тд. VibroDither_SwitchOn(); //LPC_MCPWM->CON_SET = 1<<8; старт таймера 1. выставление 8 бита mscon_set изменяет 8 бит в регистре mscon (PDF CTP. - 526) init_BandPass(1.0/(float)Vibro_Filter_Aperture, 100.0/(float)DEVICE_SAMPLE_RATE_HZ, DUP); //линейный фильтр (то же самое что и в СРП)полософой фильтр для выделения частоты колебания. MaxDelay = Vibro_Filter_Aperture >> 1; //r. макс. задержка меандра вибропривода (Vibro_Filter_Aperture определяетс в init_VibroReduce();) - CounterIquiryCycle_Init((Device_blk.Str.VB_N*Vibro_2_CountIn)>>SHIFT_C_7680_12500); //задание периода сброса счетчика, запрет прерывания. + //CounterIquiryCycle_Init((Device_blk.Str.VB_N*Vibro_2_CountIn)>>SHIFT_C_7680_12500); //задание периода сброса счетчика, запрет прерывания. } /****************************************************************************** ** End Of File