Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LG by
Revision 129:406995a91322, committed 2016-04-12
- Comitter:
- Kovalev_D
- Date:
- Tue Apr 12 11:10:49 2016 +0000
- Parent:
- 128:1e4675a36c93
- Child:
- 130:1421dda4d7e7
- Commit message:
- ?????? ? ?????? ??????????
Changed in this revision
--- a/CntrlGLD.c Mon Apr 11 11:04:34 2016 +0000 +++ b/CntrlGLD.c Tue Apr 12 11:10:49 2016 +0000 @@ -11,7 +11,7 @@ uint32_t Valid_Data; //r. байт-признак достоверных данных, накапливающий ошибки от запроса до запроса -TDEVICE_BLK Device_blk; //e. union for device constants +//TDEVICE_BLK Device_blk; //e. union for device constants uint32_t ser_num; //e. device serial number int Device_Mode = DM_INT_10KHZ_LATCH; //r. режим работы прибора (внутр.защелка, знаковый меандр или внешняя защелка)
--- a/CntrlGLD.h Mon Apr 11 11:04:34 2016 +0000 +++ b/CntrlGLD.h Tue Apr 12 11:10:49 2016 +0000 @@ -34,7 +34,7 @@ //e. *** the BLOCK of VARIABLES, LOADED from FLASH-memory ********************** //r. *** БЛОК ПЕРЕМЕННЫХ, ЗАГРУЖАЕМЫХ из FLASH-памяти ********************** //e. Address (parameter number in the block = 0..255 ) //r. Адрес (Номер параметра в блоке = 0..255) -typedef union { +/*typedef union { int Array[171]; struct { // Device_blk @@ -137,7 +137,7 @@ - +*/ @@ -146,7 +146,7 @@ //e. ************ end of the BLOCK of VARIABLES, LOADED from FLASH-memory ************ //r. ************ конец блока загружаемых из флэш-памяти параметров ГЛД ************ -extern TDEVICE_BLK Device_blk; //e. the BLOCK of VARIABLES, LOADED from FLASH-memory //r. БЛОК ПЕРЕМЕННЫХ, ЗАГРУЖАЕМЫХ из FLASH-памяти + //e. the BLOCK of VARIABLES, LOADED from FLASH-memory //r. БЛОК ПЕРЕМЕННЫХ, ЗАГРУЖАЕМЫХ из FLASH-памяти extern int Device_Mode; extern unsigned Valid_Data;
--- a/Command.c Mon Apr 11 11:04:34 2016 +0000 +++ b/Command.c Tue Apr 12 11:10:49 2016 +0000 @@ -12,16 +12,44 @@ unsigned int Consol=123; unsigned int TempParam=1; unsigned int CountParam=0; -/* -void exec_CMD(void) //r. === процедура окончательной дешифрации и исполнения команды + +void CMD_M_Param_R(void) { - unsigned int Comand_code; - - //rx_buf_copy = 1; //r. предустанов флага копирования приемного буфера - - Comand_code = (rcv_buf[2] & 0xFF) << 8; - PC_Comand = Comand_code | (rcv_buf[3] & 0xFF); //e. save it in the memory for echo-transmission //r. сохранить его в памяти для обратной передачи -}*/ + unsigned int NP; + unsigned int Param; + BuffTemp[0] = Gyro.SOC_Out; + BuffTemp[1] = Gyro.My_Addres; + + NP = BuffTemp[3]; + + Param = GyroP.Array[NP]; + + BuffTemp[2] =(Param >> 8) & 0xff;//старший байт требуемого параметра + BuffTemp[3] =(Param >> 0) & 0xff;//младший байт требуемого параметра + + Check(BuffTemp, 6); + WriteConN (BuffTemp,6); +} +void CMD_M_Param_W(void) +{ + unsigned int NP; + unsigned int Param; + + NP = BuffTemp[3]; + Param = (BuffTemp[4]<<8); + Param |= BuffTemp[5]; + + GyroP.Array[NP] = Param; + + + BuffTemp[0] = Gyro.SOC_Out; + BuffTemp[1] = Gyro.My_Addres; + BuffTemp[2] = Gyro.CMD_In; + BuffTemp[3] = 0x00;//старший байт требуемого параметра + + Check(BuffTemp, 6); + WriteConN (BuffTemp,6); +} void CMD_Maintenance(void) { @@ -201,11 +229,8 @@ { unsigned int Temp; Gyro.EXT_Latch=0; - WriteCon("0"); BuffTemp[ 0] = Gyro.SOC_Out; - WriteCon("1"); BuffTemp[ 1] = Gyro.My_Addres; - Temp = Gyro.CuruAngle; Gyro.CuruAngle = 0; @@ -552,7 +577,14 @@ break; } } - + BuffTemp[0] = Gyro.SOC_Out; //DD + BuffTemp[1] = Gyro.My_Addres; //00 + BuffTemp[2] = Gyro.CMD_In; //D8 + BuffTemp[3] = A<<4; + BuffTemp[4] = 0x0; + BuffTemp[5] = 0x0; + Check(BuffTemp, CRC_N); + WriteConN (BuffTemp,CRC_N); } void CMD_M_Control_D9()///чтение регистров управления @@ -658,12 +690,23 @@ lengf=8; break; - case 0xA5://DeviceMode + case 0xE9://DeviceMode lengf=6; CRC_N=8; break; + case 0xE8://DeviceMode + lengf=6; + CRC_N=8; + break; + + case 0xA5://DeviceMode + + lengf=6; + CRC_N=8; + break; + case 0xDD://m_rate lengf=6; CRC_N=44; @@ -761,10 +804,12 @@ ReadCon1(BuffTemp); switch(Gyro.CMD_In) { Rate_Flag=0; + case 0x99: Gyro.ModeOut=0; CMD_Maintenance(); break; + case 0xA0: TempParam=(BuffTemp[3]) & 0x90; if (TempParam==Delta_500) CMD_Delta_500Hz(); @@ -772,15 +817,27 @@ else if (TempParam==PDelta_500) { Gyro.ModeOut=3; Gyro.Delta500_Event=0; WriteCon("Delta500"); } else if (TempParam==PDelta_EXT) { Gyro.ModeOut=4; Gyro.DeltaEXT_Event=0; WriteCon("deltaEXT"); } break; + case 0xD8: CMD_M_Control_D8(); break; + + case 0xE9://чтение параметров + CMD_M_Param_R(); + break; + + case 0xE8://запись параметра + CMD_M_Param_W(); + break; + case 0xD9: CMD_M_Control_D9(); break; + case 0x0A: CMD_M_Stymul(); break; + case 0xDD: TempParam=(BuffTemp[3]) & 0x9f; if (TempParam == Rate1) { CMD_Rate(); WriteCon("Rate11");} @@ -788,9 +845,11 @@ else if (TempParam == PRate1) { Gyro.ModeOut=1; Gyro.Rate1_Event=0; WriteCon("Rate12");} else if (TempParam == PRate2) { Gyro.ModeOut=2; Gyro.Rate2_Event=0; WriteCon("Rate22");} break; + case 0xE4: CMD_M_vib(); break; + case 0xE6: Gph_W(); break;
--- 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
--- a/Global.c Mon Apr 11 11:04:34 2016 +0000 +++ b/Global.c Tue Apr 12 11:10:49 2016 +0000 @@ -84,6 +84,11 @@ Buff_8Point[i] = 0x00; Buff_32Point[i] = 0x00; Buff_16PointD[i] = 0x00; + GyroP.Array[i] = 0x00; + } + + for (int i = 0; i < 170; i++ ) { + GyroP.Array[i] =i; } //////////////////////////////////////////////////// ////////////////////////////////////////////////////
--- a/PLC_reg.c Mon Apr 11 11:04:34 2016 +0000 +++ b/PLC_reg.c Tue Apr 12 11:10:49 2016 +0000 @@ -54,7 +54,7 @@ ******************************************************************************/ void init_PLC(void) { - int i; + /* int i; //( 1,2 вольта) if (Device_blk.Str.WP_reset < PLC_RESET_THRESHOLD) //e. напряжение после сброса на нагревателе не должно превышать 1,2 вольта. //(исходное значение регулятора СРП (после сброса)) < (-3276). @@ -87,7 +87,7 @@ Device_blk.Str.WP_scl <<= 1; //e. during fist 10 seconds after start we state Device_blk.Str.WP_scl = 2*Device_blk.Str.WP_scl // первые 10 секунд работать с коэфициентом передачи * 2 - MaxDelayPLC = Device_blk.Str.PI_b3>>1; //e. max expected delay for phase detector output + MaxDelayPLC = Device_blk.Str.PI_b3>>1; //e. max expected delay for phase detector output*/ } // init_PLC /****************************************************************************** @@ -101,7 +101,7 @@ ******************************************************************************/ int PLC_MeanderDelay(int flag) { - static int poz_counter = 0, neg_counter = 0, flg_delay; + /* static int poz_counter = 0, neg_counter = 0, flg_delay; if (Device_blk.Str.WP_ref == 0) { return (flag); @@ -125,7 +125,7 @@ if (neg_counter == Device_blk.Str.WP_ref) { flg_delay = 1; } - return (flg_delay); + return (flg_delay);*/ } /****************************************************************************** ** Function name: clc_PLC
--- a/Parameters.c Mon Apr 11 11:04:34 2016 +0000 +++ b/Parameters.c Tue Apr 12 11:10:49 2016 +0000 @@ -11,7 +11,7 @@ ******************************************************************************/ void LoadFlashParam(unsigned source) { - if (source == FromFLASH) +/* if (source == FromFLASH) { while (LPC_GPDMACH3->CConfig & (1<<17)); //e. wait while DMA channel3 is busy @@ -34,7 +34,7 @@ else //e. source == ByDefault init_DefaultParam(); //e. load parameters by default - blt_in_test = ((uint32_t)FIRMWARE_VER << 8) | (Device_blk.Str.Device_SerialNumber & 0x00FF); + blt_in_test = ((uint32_t)FIRMWARE_VER << 8) | (Device_blk.Str.Device_SerialNumber & 0x00FF);*/ } /****************************************************************************** ** Function name: init_DefaultParam @@ -47,7 +47,7 @@ ******************************************************************************/ void init_DefaultParam(void) { - int i; + /*int i; Device_blk.Str.My_Addres = My_Addres_const; //r. 0x00; //e. direct set of the main device address //r. прямое назначение основного адреса у-ва @@ -115,7 +115,7 @@ Device_blk.Str.Gain_Ph_B = G_PHOTO_STRB; Device_blk.Str.Device_SerialNumber = DEVICE_SN; //e. serial number of the device is by default written down in the register of self-testing //r. серийный номер прибора по умолчанию записываем в регистр самотестирования - + */ } // init_DefaultParam /****************************************************************************** ** Function name: FlashDMA_Init @@ -127,13 +127,13 @@ ** ******************************************************************************/ void FlashDMA_Init() -{ +{/* LPC_GPDMACH3->CConfig &= ~DMAChannelEn; LPC_GPDMA->IntTCClear = DMA3_IntTCClear; LPC_GPDMA->IntErrClr = DMA3_IntTCClear; - /* Ch3 set for M2M transfer from Flash to RAM. */ + LPC_GPDMACH3->CSrcAddr = 0x40000; //e. address of device parameter block in flash memory (22 sec) LPC_GPDMACH3->CDestAddr = (uint32_t)&(Device_blk.Array);//e. address of device parameter block in RAM @@ -142,5 +142,5 @@ LPC_GPDMACH3->CConfig = MaskTCInt |MaskErrInt|DMA_MEMORY |DMA_MEMORY |(M2M << 11)| DMAChannelEn; - return; + return;*/ }
--- a/ThermoCalc.c Mon Apr 11 11:04:34 2016 +0000 +++ b/ThermoCalc.c Tue Apr 12 11:10:49 2016 +0000 @@ -62,7 +62,7 @@ ******************************************************************************/ int StaticTermoCompens(int temperature) //r. расчет статической составляющей термокомпенсации за один период прибора (100 мкс) { - +/* float TermoCompens_Curr; //r. величина термокомпенсации за один период прибора (100 мкс) int i, t; @@ -87,16 +87,11 @@ //r. Отладка //r. TermoCompens_Curr = 1.111111125; // отладка //r.TermoCompens_Curr = // 0.25; // за 1 сек накапливается 2500 импульсов - /*r. - //0.000100; // коэфф., при котором за 1 сек накапливается 1 импульс - //1.0001; // коэфф., при котором за 1 сек накапливается 10001 импульс - // 0.000125; // коэфф., при котором за 1 сек накапливается 1.25 импульса (за 100 выводится 122 имп.???) - // 0.000105; // за 100 сек д.накапливаться 105 имп., накапл. 103??? - */ + // TermoCompens_Curr = LONG_2_FRACT_14_18(TermoCompens_Curr); //r. TermoCompens_Curr переводим в формат 14.18 - return TermoCompens_Curr; + return TermoCompens_Curr;*/ } // StaticTermoCompens /****************************************************************************** @@ -110,7 +105,7 @@ ******************************************************************************/ int DynamicDeltaCalc() //e. calculation the addition termocompensation for 1 reset //r. расчет добавки термокомпенсации на одно обнуление { - +/* int i, t; t = Temp_Aver; @@ -135,7 +130,7 @@ TermoCompDelta = ( Device_blk.Str.ThermoCoolDelta[i] - dThermoCoolDeltaPer_dTermo[i] * (float)( Device_blk.Str.TemperCoolIntDyn[i] - t ) ); } return TermoCompDelta; - +*/ } // DynamicDeltaCalc /****************************************************************************** @@ -148,7 +143,7 @@ ** ******************************************************************************/ void clc_ThermoSensors(void) -{ +{/* unsigned i; static int TS_sum = 0; static int seconds_aver = 0, TenSeconds = 0; @@ -159,9 +154,7 @@ for (i=0; i<2; i++) { //e. conversion of temperature values on ADC output //r. преобразование значений температуры на выходе АЦП //e. to range -32768 .. +32767 ( additional code; format 1.15 ) //r. к диапазону -32768 .. +32767 (дополнит. код; формат 1.15) - /* Output.Str.Tmp_Out[i] = mac_r(Device_blk.Str.Tmp_bias[i] << 16, - (Input.StrIn.Tmp_in[i] - 0x8000), - Device_blk.Str.Tmp_scal[i]);*/ + Output.Str.Tmp_Out[i+4] = Input.StrIn.Tmp_in[i]; } @@ -238,7 +231,7 @@ if ( abs( Output.Str.Tmp_Out[4] - Output.Str.Tmp_Out[5]) > TS_DIFF_MAX) { Valid_Data |= THERMO_DIFF_ERROR; - } + }*/ } // clc_ThermoSensors @@ -252,7 +245,7 @@ ** ******************************************************************************/ void DithFreqRangeCalc(void) //r. расчет границ коэффициента деления для частоты вибропривода, зависящих от текущей температуры -{ +{/* unsigned int min_level, max_level; int delta_VB_N; @@ -266,7 +259,7 @@ Max_Saturation(&max_level, ((unsigned int)0xFFFF >> DITH_VBN_SHIFT)); Device_blk.Str.VB_Nmin = min_level << DITH_VBN_SHIFT; Device_blk.Str.VB_Nmax = max_level << DITH_VBN_SHIFT; - +*/ } // DithFreqRange_calc
--- a/commandset.c Mon Apr 11 11:04:34 2016 +0000 +++ b/commandset.c Tue Apr 12 11:10:49 2016 +0000 @@ -372,18 +372,18 @@ void M_Gph_W(void) //e.------------ set the gain factor of photodetector channels ------------------- //r.------------ установка усиления каналов фотоприемника ------------------- { - Device_blk.Str.Gain_Ph_A = rcv_buf[4]; //e. read from the receiver buffer the value of the gain factor of the A channel //r. считать из буфера приемника значение усиления канала А + /* Device_blk.Str.Gain_Ph_A = rcv_buf[4]; //e. read from the receiver buffer the value of the gain factor of the A channel //r. считать из буфера приемника значение усиления канала А Device_blk.Str.Gain_Ph_B = rcv_buf[5]; //e. read from the receiver buffer the value of the gain factor of the B channel //r. считать из буфера приемника значение усиления канала В Out_G_photo(Device_blk.Str.Gain_Ph_A, Device_blk.Str.Gain_Ph_B); //e. display these values to digital potentiometers //r. вывести эти значения в цифровые потенциометры trm_cycl = 0; //e. periodic data transmission is not needed //r. периодическая передача ответа не требуется - Mk_Ask1(); + Mk_Ask1();*/ } // M_Gph_W -/* + void M_Rate(void) //e.------------ start of transfer of the M_Rate parameters stack ------------------- //r.------------ запуск передачи набора параметров M_Rate ------------------- { - uint8_t mode; + /* uint8_t mode; SetSpeedPeriod(); //e. set the answer transfer rate and its periodicity //r. установить скорость передачи ответа и его периодичность UART_SwitchSpeed(trm_rate); @@ -500,25 +500,25 @@ trm_ena = 1; //e. allow operation of the transmitter //r. разрешить работу передатчика break; } - SetIntLatch(wrk_period); + SetIntLatch(wrk_period);*/ } // M_Rate -*/ + void M_Reset(void) { while(1); } // will not achieve void M_Param_R(void) //e. ------------ read the parameter of the GLD from the data memory ---------------------- //r.------------ чтение параметра GLD из памяти данных ---------------------- -{ +{/* num_of_par = 1; //e. 1 parameter output //r. выводить один параметр addr_param[0] = (void *)(&Device_blk.Str.My_Addres + rcv_buf[3]); //e. address of the needed parameter in the block //r. адрес требуемого параметра в блоке size_param[0] = 2; //e. size of the buffer - 2 bytes //r. размер буфера - 2 байта - trm_ena = 1; //e. allow operation of the transmitter //r. разрешить работу передатчика + trm_ena = 1; */ //e. allow operation of the transmitter //r. разрешить работу передатчика*/ } // M_Param_R void M_Param_W(void) //e.------------ write the parameter of the GLD from the data memory ----------------------- //r.------------ запись параметра GLD в память данных ----------------------- -{ +{/* int * ptr; ScopeMode = 0; //e. VB_DELAY_MEANDER allocate a mode of display for a control point of an scope //r. VB_DELAY_MEANDER назначить режим отображения для контрольной точки осциллографа @@ -528,22 +528,22 @@ *ptr = (rcv_buf[4] << 8) | (rcv_buf[5] & 0xFF); // write new parameter value trm_cycl = 0; //e. periodic data transmission is not needed //r. периодическая передача ответа не требуется - Mk_Ask1(); + Mk_Ask1();*/ } // M_Param_W void M_LdPar_F() //e.============ procedure for load the GLD parameters from the flash-memory =========== //r.============ процедура загрузки параметров ГЛД из флэш-памяти =========== { - +/* LoadFlashParam(FromFLASH); //e. load the GLD parameters from the flash-memory //r. загрузить параметры ГЛД из фдэш-памяти blt_in_test = ((uint32_t)FIRMWARE_VER << 8) | (Device_blk.Str.Device_SerialNumber & 0x00FF); // Init_software(); trm_cycl = 0; //e. periodic data transmission is not needed //r. периодическая передача ответа не требуется - Mk_Ask1(); + Mk_Ask1();*/ } // M_LdPar_F void M_LdPar_D(void) //e.============ procedure for set parameters of the GLD by default ============ //r.============ процедура установки параметров ГЛД по умолчанию ============ -{ +{/* #if !defined COMMAND_DEBUG LoadFlashParam(ByDefault); //e. define parameters of the GLD by default //r. определить параметры ГЛД по умолчанию (default) Init_software(); @@ -582,7 +582,7 @@ } // B_Delta void D_Period_W(void) //e. === set the period of the angle increase output //r. === установка периода выдачи приращения угла -{ +{*/ } // D_Period_W // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--- a/el_lin.c Mon Apr 11 11:04:34 2016 +0000 +++ b/el_lin.c Tue Apr 12 11:10:49 2016 +0000 @@ -200,7 +200,7 @@ void transm_DAT(void) -{ +{/* uint32_t param, param_byte, CRC; int32_t *trans_param; @@ -237,7 +237,7 @@ for (param_byte = 0; param_byte < size_param[param]; param_byte++) { if ( (param_byte & 0x0001) == 0 ) //r. считываем старший байт - trm_buf[trm_num_byt] = (*trans_param >> (8/**(size_param[param]-param_byte-1)*/)) & 0x00ff; //r.размещение передаваемого параметра в пакете + trm_buf[trm_num_byt] = (*trans_param >> (8)) & 0x00ff; //r.размещение передаваемого параметра в пакете else { trm_buf[trm_num_byt] = *trans_param & 0x00ff; trans_param ++; //r.переходим к следующей ячейке памяти @@ -280,7 +280,7 @@ } LPC_GPDMACH2->CConfig |= DMAChannelEn; //e. DMA for enable signal - return; + return;*/ } /****************************************************************************** ** Function name: DMA_Init
--- a/main.c Mon Apr 11 11:04:34 2016 +0000 +++ b/main.c Tue Apr 12 11:10:49 2016 +0000 @@ -58,8 +58,8 @@ UART_InitSet (0, 921600, 0x03); // надо проверить, мож чо с ногам - UART_InitSet (1, 921600, 0x03); - //UART_InitSet (1, 115200, 0x03); + // UART_InitSet (1, 921600, 0x03); + UART_InitSet (1, 115200, 0x03); //////////// //DAC_ADC_Exchange_Init(); // инициализация обмена АЦП и ЦАП. @@ -69,7 +69,7 @@ LoadFlashParam(FromFLASH); //загрузка параметров. // open_all_loops(); //#define open_all_loops() RgConA = 0 (Основной регистр управления устройства (0 - включить, 1 - отключить)). - Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ. + // Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ. init_PLC(); //Инициализация СРП(регулировка периметра) init_Dither_reg(); //инициализация вибропривода // RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1 0x0001)
--- a/mathDSP.c Mon Apr 11 11:04:34 2016 +0000 +++ b/mathDSP.c Tue Apr 12 11:10:49 2016 +0000 @@ -36,7 +36,7 @@ ******************************************************************************/ void init_VibroReduce() { - unsigned int i; + /*unsigned int i; __int64 coeff; // ~22.9 ~17600 768 | 10000Hz = 10 KHz |*| ????? |/|768000| Vibro_Filter_Aperture = Device_blk.Str.VB_N/DIV_CONST; //e. real expression is DEVICE_SAMPLE_RATE_HZ*Device_blk.Str.VB_N/7680000 @@ -54,7 +54,7 @@ hMovAver[i]= coeff; } Vibro_2_CountIn = MULT_7680_12500/Vibro_Filter_Aperture; - Vibro_2_CountIn++; //какойто счетчик + Vibro_2_CountIn++; //какойто счетчик*/ } /******************************************************************************
--- a/vibro.c Mon Apr 11 11:04:34 2016 +0000 +++ b/vibro.c Tue Apr 12 11:10:49 2016 +0000 @@ -1,6 +1,6 @@ #include "Global.h" GyroT Gyro; - +GyroParam GyroP; volatile unsigned int Cheng_AMP_Flag=0; int reper=0;
--- a/vibro.h Mon Apr 11 11:04:34 2016 +0000 +++ b/vibro.h Tue Apr 12 11:10:49 2016 +0000 @@ -153,12 +153,118 @@ unsigned int EXT_Latch; -} GyroT, *Gyro_p; -extern GyroT Gyro; +} GyroT, *Gyro_p; +extern GyroT Gyro; + +typedef union { + int Array[171]; + struct { + // Device_blk + int My_Addres; //e. 0 - device own address //r.0 - собственный адрес устройства + + //e. =============== parameters of HFO regulator =============== //r. =============== параметры контура ВЧ генератора накачки =============== + int HF_ref; //e. 1 - value of the reference //r. 1 - значение опоры + int HF_scl; //e. 2 - the gain factor (1.15) //r. 2 - коэффициент передачи (1.15) + int HF_min; //r. 3 - минимум выходного значения на ЦАПе регулятора (соответствует максим. напряжению на ГВЧ) + int HF_max; //e. 4 - maximum of the output value on the regulator DAC (appropriate to minimal voltage on the HFO) //r. 4 - максимум выходного значения на ЦАПе регулятора (соответствует миним. напряжению на ГВЧ) + + //e. =============== parameters of the regulator of the DS power regulator ========== //r. =============== параметры контура регулирования мощности ДУП ========== + int RI_ref; //e. 5 - value of the reference //r. 5 - значение опоры + int RI_scl; //e. 6 - the gain factor (1.15) //r. 6 - коэффициент передачи (1.15) + + //e. =============== parameters of the CPLC regulator ===== //r. =============== параметры контура стабилизации рабочего периметра (СРП) ===== + int WP_ref; //e. 7 - value of the reference //r. 7 - значение опоры + int WP_scl; //e. 8 - the gain factor (1.15) //r. 8 - коэффициент передачи (1.15) + int WP_mdy; //e. 9 - value of the reset delay //r. 9 - значение задержки сброса + int WP_rup; //e. 10 - upper value of DAC adjustment (appropriate to minimal voltage on the heater) //r. 10 - верхнее значение регулировки ЦАП (соответствует миним. напряжению на нагревателе) + int WP_rdw; //e. 11 - lower value of the DAC adjustment (appropriate to maximal voltage on the heater) //r. 11 - верхнее значение регулировки ЦАП (соответствует максим. напряжению на нагревателе) + + //e. =============== parameters of the dither drive regulator of the GLD ==================== //r. =============== параметры контура вибропривода ГЛД ==================== + int VB_phs; //e. 12 - the phase delay parameter of the dither drive PLL //r. 12 - параметр Phase_зад. СРЧ вибропривода + int VB_scl; //e. 13 - the gain factor (1.15) of the dither drive PLL //r. 13 - коэффициент передачи (1.15) СРЧ вибропривода + unsigned int VB_N; //e. 14 - divider for dither drive period (defines dither period) //r. 14 - коэфф.деления N вибропривода (период колебаний) ВП + unsigned int VB_Nmin; //e. 15 - minimum of the output value of the oscillation period regulator //r. 15 - минимум выходного значения регулятора периода + unsigned int VB_Nmax; //e. 16 - maximum of the output value of the oscillation period regulator //r. 16 - максимум выходного значения регулятора периода + + int VB_Fdf_Hi; //e. 17 - adjusted output frequency (H) //r. 17 - заданная частота расщепления (H) + unsigned int VB_Fdf_Lo; //e. 18 - (L) (double precision) //r. 18 - (L) (двойная точность) + + int VB_Fsc; //e. 19 - the gain factor of the frequency regulator //r. 19 - коэффициент передачи регулятора частоты расщепления + unsigned int VB_Tmin; //e. 20 - the gain factor of the frequency regulator //r. 19 - коэффициент передачи регулятора частоты расщепления + unsigned int VB_Tmax; //e. 21 - maximum of the output value of the regulator //r. 21 - максимум выходного значения регулятора Tau + unsigned int VB_tau; //e. 22 - pulse width of the dither drive (without noise)//r. 22 - длительность импульса вибропривода (до ошумления) + int VBN_Tzd; //e. 23 - adjusted noise period //r. 23 - заданный период ошумления + int VBN_Ran; //e. 24 - range of the random component of noise //r. 24 - диапазон случайной составляющей ошумления VBN_Tsl + int VBN_k; //e. 25 - adjusted noise constant //r. 25 - заданная константа ошумления + + //e. =============== parameters of processing of accurate data ============= //r. =============== параметры обработки точностной информации ============= + int PI_Fsc; //_ //e. 26 - the S_ds scale parameter //r. 26 - масштабный коэффициент Sдуп + int PI_Fb0; //_ //e. 27 - the B_ds zero shift of the DS //r. 27 - смещение нуля ДУПа Bдуп + int PI_scl; //_ //e. 28 - the Scale scale coefficient of the gyro //r. 28 - масштабный коэфф. гироскопа Scale + int PI_bia; //_ //e. 29 - the Bias zero shift of the gyro //r. 29 - смещение нуля гироскопа Bias + + //e. =============== coefficients of the temperature correction ================= //r. =============== коэффициенты температурной коррекции ================= + int PI_a0; //_ // 30 + int PI_a1; //_ // 31 + int PI_a2; //_ // 32 + int PI_a3; //_ // 33 + int PI_a4; //_ // 34 + int PI_a5; //_ // 35 + int PI_a6; //_ // 36 + int PI_b1; //_ // 37 + int PI_b2; //_ // 38 + int PI_b3; //_ // 39 + int PI_b4; //_ // 40 + int PI_b5; //_ // 41 + int PI_b6; //_ // 42 + + //e. =============== parameters of normalization of the temperature sensors ============= //r. =============== параметры нормировки датчиков температуры ============= + + int Tmp_bias[6]; //_ //e. 43 - an array of shifts of the 0..5 temperature sensors //r. 43 - массив сдвигов температурных датчиков 0..5 + int Tmp_scal[6]; //_ //e. 49 - an array of the scale coefficients of temperature sensors//r. 49 - массив масштабных к-тов температурных датчиков + int WP_reset; //e. 55 - initial position of the CPLC regulator (after reset) //r. 55 - исходное положение регулятора СРП (после сброса) + + //e. ================ gain factor of photodetector channels =========== //r. ================ к-т усиления каналов фотоприемника =========== + unsigned int Gain_Ph_A; //e. 56 - initial gain factor of the A channel of photodetector //r. 56 - начальный к-т усиления канала А фотоприемника + unsigned int Gain_Ph_B; //e. 57 - initial gain factor of the B channel of photodetector //r. 57 - начальный к-т усиления канала B фотоприемника + + //e. =============== switch of the source of loading GLD variables block === //r. =============== переключатель источника загрузки блока переменных ГЛД (галочка в настороечной программе) + + int Header_Word; //e. 58 - flash sector validity header //r. 58 - заголовок-ключ к индикатору источника загрузки + int LoadFlash_enable; //e. 59 - source loading flag: 1 - load from the flash //r. 59 - признак источника загрузки: 1 - грузиться из flesh + +//e. 0 - load default parameters (factory) //r. 0 - грузить параметры по умолчанию (заводские) + unsigned int Device_SerialNumber; //e. 60 - serial number of the device //r. 60 - серийный номер прибора + int Reserved0; //e. 61 - not used + + int WP_reset2; //e. 91 - voltages of CPLC regulator reset at cooling //r. xx - напряжения обнуления контура СРП при охлаждении + //e. parameters setting termocompensation parameters in dynamics (at heating and cooling) //r. параметры, задающие параметры термокомпенсации в динамике (при нагреве и охлаждении) + float Reserved1; //e. 92 - not used + float Reserved2; //e. 93 - not used + int K_vb_tu; //e. 94 - slope of dependence of the VB_N division factor from temperature (as though Hz/degree, but in relative units ) //r. крутизна зависимости коэффициента деления VB_N от температуры (как бы Гц/градус, но в у.е.) + int TemperNormal; //e. 95 -temperature for which the VB_N division factor of the dither drive is set //r. температура, для которой задан коэффициент деления вибропривода VB_N + int K_WP_rst_heating; //r. 96 - крутизна зависимости напряжения обнуления при нагревании от температуры (как бы вольт/градус, но в у.е. ЦАП и термодатчиков ) + int K_WP_rst_cooling; //e. 97 - slope of dependence of a reset voltage at cooling from temperature (as though Volt/degree, but in relative units of DAC and temperature sensors) //r. крутизна зависимости напряжения обнуления при охлаждении от температуры (как бы вольт/градус, но в у.е. ЦАП и термодатчиков ) + int WP_transition_step; //e. 98 - step of change of a heater voltage at resetting //r. шаг изменения напряжения нагревателя при выполнении обнуления + int Reserved3; // e. 99 -not used + int HF_scl_2; //r. 100 - коэффициент передачи (1.15) контура ГВЧ при обнулении +// int TemperIntDyn[TERMO_FUNC_SIZE]; //e. 114 - +// float ThermoHeatDelta[TERMO_FUNC_SIZE]; //e. 128 - + int DeltaTempRecalc; //r. 129 - температурный интервал пересчета динамич. компенсации (в у.е.) //e. temperature delta for dynamic thermocompensation recalculation(in relative units) +// int TemperCoolIntDyn[TERMO_FUNC_SIZE]; // e. 143 - +// float ThermoCoolDelta[TERMO_FUNC_SIZE]; //e. 157 - +// TERMO_MODE TermoMode; //e 62 - device operation mode (with thermocompenstion, without it, debug )//r. 62 - режим работы прибора (с термокомпенсацией, без нее или отладка) +//e. addition for the piecewise-linear termocorrection //r. добавление для кусочно-линейной термокоррекции +// int TemperInt[TERMO_FUNC_SIZE]; //e. 63 +// float TermoFunc[TERMO_FUNC_SIZE]; //e. 77 + } Str; +} GyroParam; + +extern GyroParam GyroP; extern unsigned int amp;