fork

Dependencies:   mbed

Fork of LG by igor Apu

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