Dmitry Kovalev
/
LG2
fork
Fork of LG by
vibro.h
- Committer:
- Kovalev_D
- Date:
- 2016-12-20
- Revision:
- 206:00341a03e05c
- Parent:
- 205:775d54fdf646
- Child:
- 207:d1ce992f5d17
File content as of revision 206:00341a03e05c:
#ifndef VIBRO_H #define VIBRO_H #define ClrV1 LPC_GPIO1->FIOSET=(1<<25); #define SetV1 LPC_GPIO1->FIOCLR = (1<<25); #define TXOn LPC_GPIO2->FIOSET=(1<<7); #define TXOff LPC_GPIO2->FIOCLR = (1<<7); #define ClrV2 LPC_GPIO1->FIOSET = (1<<28); #define SetV2 LPC_GPIO1->FIOCLR = (1<<28); #define LoopOn LPC_GPIO1->FIOSET = (1<<30); #define LoopOff LPC_GPIO1->FIOCLR = (1<<30); #define StartV1 0 #define StartV2 15 #define TIME_INTERVAL (7812) #define Rate1 0x01 #define Rate2 0x02 #define PRate1 0x81 #define PRate2 0x82 //////////////////////////////////////////////////////// ////Дефайны для декодирования запроса параметров Rate/// //////////////////////////////////////////////////////// #define Delta_500 0x10 #define PDelta_500 0x90 #define Delta_EXT 0x0 #define PDelta_EXT 0x80 #define Delta_Bins 0x0 #define PDelta_Bins 0x1 #define PB_Delta_EXT 0x9 #define B_Delta_EXT 0x1 #define PB_Delta_INT 0x8 #define B_Delta_INT 0x0 /////////////////////////////////////////////////////////// #define FrqOFF Gyro.RgConA &= ~AFRQ; //установить контур регулировки частоты в "0" #define FrqON Gyro.RgConA |= AFRQ; //установить контур регулировки частоты в "1" #define AVibOFF Gyro.RgConA &= ~AVBT; //установить контур регулировки частоты в "0" #define AVibON Gyro.RgConA |= AVBT; //установить контур регулировки частоты в "1" #define HFOOFF Gyro.RgConA &= ~AHFO; //установить контур накачки в "0" #define HFOON Gyro.RgConA |= AHFO; //установить контур накачки в "1" #define PlcOFF Gyro.RgConA &= ~APLC; //установить контур регулировки периметра в "0" #define PlcON Gyro.RgConA |= APLC; //установить контур регулировки периметра в "1" #define AFRQ (1<<6) #define AVBT (1<<5) #define APLC (1<<3) #define AHFO (1<<1) #define LedOFF Gyro.PinReg &= ~PinRegBitLED; //установить бит светодиода в "0" #define LedON Gyro.PinReg |= PinRegBitLED; //установить бит светодиода в "1" #define StartBackLight 0x00000333 #define StartDischarg 0x00000222 #define PinRegBitTXE (1<<5) #define PinRegBitLED (1<<4) #define PinRegBitD (1<<3) #define PinRegBitL (1<<2) #define PinRegBit_2V (1<<1) #define PinRegBit_1V (1<<0) #define ShiftStart0 0x1 #define ShiftStart1 0x1 #define ShiftStart2 0x2 #define ShiftStart3 0x3 #define DropDelayGLD_0 50 #define DropDelayGLD_1 50 #define DropDelayGLD_2 65 #define DropDelayGLD_3 80 extern int tempAMP; //int qei; //int QEIznak1,QEIznak2; //unsigned int StrayHZ; //помеха //unsigned int StrayHZ_flag; //int flag; //unsigned int StrayPLC_Pls; //помеха + //int StrayPLC_Mns; //помеха - //unsigned int StrayPLC_2Mode; //unsigned int StrayPLC_flag; //unsigned int ModJump; //unsigned int TimJump; //unsigned int flagGph_W; //unsigned int Test_time; //unsigned int Test_time1; //unsigned int Rate1_Flag; //unsigned int Rate2_Flag; //int AmpSC;//переменная для других ошумлений //unsigned int Delta500_Event; //unsigned int Delta_Bins_Event500; //unsigned int B_Delta_Event500; //float Ktermo; //unsigned int EventMOD; //контур регулеровки Периметра "PLC" - без модулятора //int PLC_Delta; // разница между старым и новым показаниями //int PLC_DeltaADD; // разница между старым и новым показаниями с учетом знака управляешего напряжения АЦП //int PLC_Old; //int PLC_ADC_DOld; //int PlC_MaxD; // разница между максимальной и текущей амплитудами. //int PLC_Regul; //int Num; //int StopCuruAngle; //unsigned int DeltaEXT_Event; // вывод параметров типа Rate по внешней защелке. //unsigned int B_Delta_EventEXT;// вывод параметров типа Rate по внешней защелке.(надо чтоб от одного влага было, как Event_500Hz) typedef struct _Gyro { unsigned int LogPLC; // 1 unsigned int Log; // 2 unsigned int PLC_Lern; // 3 обратный таймер для поиска максимальной амплитуды при работе без модулятора unsigned int ModAmp; // 4 амплитуда модулятора unsigned int FlashMod; // 5 0-ничего не делать, 1 - запись во Flash, 2 чтение из Flash. unsigned int ModeOut; // 6 переменная для выбора варианта вывода параметров типа Rate. unsigned int Rate1_Event; // 7 событие 1с для вывода параметров Rate 1 unsigned int Reper_Event; // 8 событие для вывода набора параметров типа Rate по меандру. unsigned int Event_500Hz; unsigned int RgConA; // 9 регистр управления ГЛД unsigned int RgConB; //10 регистр управления ГЛД unsigned int Gain_Sin; //11 коиф усиления синуса. unsigned int Gain_Cos; //12 коиф усиления косинуса. unsigned int Frq; //13 Непосредственное значение частоты для таймера. unsigned int FrqHZ; //14 Частота в Гц. unsigned int FrqHZmin; //15 Мин значение частоты ВП unsigned int FrqHZmax; //16 Мах значение частоты ВП unsigned int FrqChengSpeed; //17 скорость регулировки частоты ВП unsigned int VibroFrqRegulF; //18 флаг регулировки частоты ВП unsigned int VibroAMPRegulF; //19 флаг регулировки амплитуды ВП unsigned int VibroNoiseF; //20 флаг ошумления амплитуды ВП unsigned int VibroOutF; //21 флаг изменения состояния ножек вибро. unsigned int Amp; //22 значение амплитуды вибропривода в попугаях (Gyro.Amp = (0%--100%) << 16) unsigned int AmpPer; //23 Амплитуда в процентах Gyro.AmpPer = Gyro.Amp>>16 ; unsigned int AmpT; //24 значение тиков после которых происходит смена амплитуды ошумления ( rand() % Gyro.AmpTD+Gyro.AmpMin)(частота ошумления) unsigned int AmpMin; //25 минимальное значение AmpT(частота ошумления); unsigned int AmpTD; //26 диапозон частоты ошумления(частота ошумления); unsigned int AmpPerMin; //27 ограничение минимальной амплитуды ВП unsigned int AmpPerMax; //28 ограничение максимальной амплитуды ВП unsigned int AmpSpeed; //29 коиффициент сорости регулировки амплитуды unsigned int AmpTarget; //30 целевая амплитуда ВП к которой стремится регулировка. unsigned int AmpPerDel; //31 значение для расчета амплитуды (дельта амплитуды) на сколько будет отличаться в працентах 1 амплитуда от второй при ошумлении, мин знач : AmpPer, мах знач : AmpPer+AmpPerDel; (в процентах) unsigned int AmpN1; //32 левая граница импулься ВП unsigned int AmpN2; //33 правая граница импулься ВП unsigned int F_ras; //34 частота расщипления (не расчитывается) int MaxAmp; //35 амплитуда Пик-Пик расчтитанная по востановленному синусу. //ЭНКОДЕР int CaunPlus; //36 счетчик + int CaunMin; //37 счетчик - // данные АЦП unsigned int TermoNKU; //38 unsigned int Termo; //39 значение АЦП unsigned int DeltaT; //40 unsigned int In1; //41 unsigned int In2; //42 //пятый ацп, он же амплитудный детектор "AD". есть два фильтра быстрый "Fast" и медленный "Slow" unsigned int ADF_Accum; //43 Значенее амплитудного детектора Временное unsigned int ADS_Accum; //44 Значенее амплитудного детектора Временное unsigned int ADS_AccumTermLM; //45 unsigned int TermLM; //46 unsigned int ADF_Count; //47 Значенее времени накопления данных unsigned int ADS_Count; //48 Значенее времени накопления данных unsigned int AD_Fast; //49 Значенее амплитудного детектора сдвинутое на 16 бит unsigned int AD_Slow; //50 Значенее амплитудного детектора сдвинутое на 16 бит unsigned int ADF_NewData; //51 есть данные после фильтрации в быстром фильтре unsigned int ADS_NewData; //52 -----------/----------/----------/-------- int PLC_Error2Mode; //53 счетчик, не ноль когдав двух модовом регулировка без модулятора(для просмотра мод) unsigned int CMD_In; //54 входящая команда unsigned int SOC_Out; //55 unsigned int My_Addres; //56 адрес прибора unsigned int DropDelayGLD; //57 задержка для мультидропа (дискрета 100кГц) unsigned int GLD_Serial; //58 серийный номер прибора unsigned int CRC; //59 контрольная сумма посылки unsigned int Firmware_Version; //60 версия программы unsigned int RsErrLine; //61 регистр ошибок передачи. int CuruAngle; //62 текущеий угол. int OldCuruAngle; //63 старый угол int Cnt_Dif; //64 приращение угла между прошлым и текушим приращением за тик виброподвеса (32 тика) unsigned int PinReg; //65 bit4 bit3 bit 2 bit1 bit0 unsigned int PinRegOld; //66 || светодиод || состояние поджига || состояние подсветки || состояние вибро 2 || состояние вибро 1 || unsigned int Discharg; //67 последовательность бит харрактеризующая форму сигнала поджига. unsigned int BackLight; //68 последовательность бит харрактеризующая форму сигнала подсветки. unsigned int EXT_Latch; //69 } GyroT, *Gyro_p; extern GyroT Gyro; typedef union { int Array[25]; struct { unsigned int GLD_Serial; //0 серийный номер прибора unsigned int Firmware_Version; //1 версия программы unsigned int My_Addres; //2 адрес прибора unsigned int DropDelayGLD; //3 задержка для мультидропа (дискрета 100кГц) unsigned int ModAmp; //4 амплитуда модулятора unsigned int RgConA; //5 регистр управления ГЛД unsigned int RgConB; //6 регистр управления ГЛД unsigned int Gain_Sin; //7 коиф усиления синуса. unsigned int Gain_Cos; //8 коиф усиления косинуса. unsigned int FrqHZ; //9 Частота в Гц. unsigned int FrqHZmin; //10 Мин значение частоты ВП unsigned int FrqHZmax; //11 Мах значение частоты ВП unsigned int FrqChengSpeed; //12 скорость регулировки частоты ВП unsigned int AmpPer; //13 начальное значение амплитуды unsigned int AmpMin; //14 минимальное значение AmpT(частота ошумления); unsigned int AmpTD; //15 диапозон частоты ошумления(частота ошумления); unsigned int AmpPerDel; //16 значение для расчета амплитуды (дельта амплитуды) на сколько будет отличаться в працентах 1 амплитуда от второй при ошумлении, мин знач : AmpPer, мах знач : AmpPer+AmpPerDel; (в процентах) unsigned int AmpPerMin; //17 ограничение минимальной амплитуды ВП unsigned int AmpPerMax; //18 ограничение максимальной амплитуды ВП unsigned int AmpSpeed; //19 коиффициент сорости регулировки амплитуды unsigned int AmpTarget; //20 целевая амплитуда ВП к которой стремится регулировка. unsigned int TermoNKU; //21 unsigned int wall; //22 unsigned int ParamMod; //23 unsigned int DAC_A; //24 unsigned int DAC_B; //25 //unsigned int PLC_Lern; //3 обратный таймер для поиска максимальной амплитуды при работе без модулятора //unsigned int Frq; //6 Непосредственное значение частоты для таймера. } Str; } GyroParam; /* typedef union { int Array[70]; struct { unsigned int LogPLC; // 1 unsigned int Log; // 2 unsigned int PLC_Lern; // 3 обратный таймер для поиска максимальной амплитуды при работе без модулятора unsigned int ModAmp; // 4 амплитуда модулятора unsigned int FlashMod; // 5 0-ничего не делать, 1 - запись во Flash, 2 чтение из Flash. unsigned int ModeOut; // 6 переменная для выбора варианта вывода параметров типа Rate. unsigned int Rate1_Event; // 7 событие 1с для вывода параметров Rate 1 unsigned int Reper_Event; // 8 событие для вывода набора параметров типа Rate по меандру. unsigned int Event_500Hz; unsigned int RgConA; // 9 регистр управления ГЛД unsigned int RgConB; //10 регистр управления ГЛД unsigned int Gain_Sin; //11 коиф усиления синуса. unsigned int Gain_Cos; //12 коиф усиления косинуса. unsigned int Frq; //13 Непосредственное значение частоты для таймера. unsigned int FrqHZ; //14 Частота в Гц. unsigned int FrqHZmin; //15 Мин значение частоты ВП unsigned int FrqHZmax; //16 Мах значение частоты ВП unsigned int FrqChengSpeed; //17 скорость регулировки частоты ВП unsigned int VibroFrqRegulF; //18 флаг регулировки частоты ВП unsigned int VibroAMPRegulF; //19 флаг регулировки амплитуды ВП unsigned int VibroNoiseF; //20 флаг ошумления амплитуды ВП unsigned int VibroOutF; //21 флаг изменения состояния ножек вибро. unsigned int Amp; //22 значение амплитуды вибропривода в попугаях (Gyro.Amp = (0%--100%) << 16) unsigned int AmpPer; //23 Амплитуда в процентах Gyro.AmpPer = Gyro.Amp>>16 ; unsigned int AmpT; //24 значение тиков после которых происходит смена амплитуды ошумления ( rand() % Gyro.AmpTD+Gyro.AmpMin)(частота ошумления) unsigned int AmpMin; //25 минимальное значение AmpT(частота ошумления); unsigned int AmpTD; //26 диапозон частоты ошумления(частота ошумления); unsigned int AmpPerMin; //27 ограничение минимальной амплитуды ВП unsigned int AmpPerMax; //28 ограничение максимальной амплитуды ВП unsigned int AmpSpeed; //29 коиффициент сорости регулировки амплитуды unsigned int AmpTarget; //30 целевая амплитуда ВП к которой стремится регулировка. unsigned int AmpPerDel; //31 значение для расчета амплитуды (дельта амплитуды) на сколько будет отличаться в працентах 1 амплитуда от второй при ошумлении, мин знач : AmpPer, мах знач : AmpPer+AmpPerDel; (в процентах) unsigned int AmpN1; //32 левая граница импулься ВП unsigned int AmpN2; //33 правая граница импулься ВП unsigned int F_ras; //34 частота расщипления (не расчитывается) int MaxAmp; //35 амплитуда Пик-Пик расчтитанная по востановленному синусу. //ЭНКОДЕР int CaunPlus; //36 счетчик + int CaunMin; //37 счетчик - // данные АЦП unsigned int TermoNKU; //38 unsigned int Termo; //39 значение АЦП unsigned int DeltaT; //40 unsigned int In1; //41 unsigned int In2; //42 //пятый ацп, он же амплитудный детектор "AD". есть два фильтра быстрый "Fast" и медленный "Slow" unsigned int ADF_Accum; //43 Значенее амплитудного детектора Временное unsigned int ADS_Accum; //44 Значенее амплитудного детектора Временное unsigned int ADS_AccumTermLM; //45 unsigned int TermLM; //46 unsigned int ADF_Count; //47 Значенее времени накопления данных unsigned int ADS_Count; //48 Значенее времени накопления данных unsigned int AD_Fast; //49 Значенее амплитудного детектора сдвинутое на 16 бит unsigned int AD_Slow; //50 Значенее амплитудного детектора сдвинутое на 16 бит unsigned int ADF_NewData; //51 есть данные после фильтрации в быстром фильтре unsigned int ADS_NewData; //52 -----------/----------/----------/-------- int PLC_Error2Mode; //53 счетчик, не ноль когдав двух модовом регулировка без модулятора(для просмотра мод) unsigned int CMD_In; //54 входящая команда unsigned int SOC_Out; //55 unsigned int My_Addres; //56 адрес прибора unsigned int DropDelayGLD; //57 задержка для мультидропа (дискрета 100кГц) unsigned int GLD_Serial; //58 серийный номер прибора unsigned int CRC; //59 контрольная сумма посылки unsigned int Firmware_Version; //60 версия программы unsigned int RsErrLine; //61 регистр ошибок передачи. int CuruAngle; //62 текущеий угол. int OldCuruAngle; //63 старый угол int Cnt_Dif; //64 приращение угла между прошлым и текушим приращением за тик виброподвеса (32 тика) unsigned int PinReg; //65 bit4 bit3 bit 2 bit1 bit0 unsigned int PinRegOld; //66 || светодиод || состояние поджига || состояние подсветки || состояние вибро 2 || состояние вибро 1 || unsigned int Discharg; //67 последовательность бит харрактеризующая форму сигнала поджига. unsigned int BackLight; //68 последовательность бит харрактеризующая форму сигнала подсветки. unsigned int EXT_Latch; //69 unsigned int wall; //70 unsigned int ParamMod ; //71 } Str; } GyroParam; */ extern GyroParam GyroP; extern void AllRegul (void); extern unsigned int amp; extern int Rate2VibFlag; extern void cheng(void); extern void VibroOut(void); extern void VibroAMPRegul(void); extern void VibroFrqRegul(void); extern unsigned int FrecTp; extern int Pulse_midl; extern struct VIBRO Vib; extern int PulseHalf; extern int CuruAngle; extern unsigned int FrecTemp; #endif