fork

Dependencies:   mbed

Fork of LG by igor Apu

Global.c

Committer:
Kovalev_D
Date:
2016-03-24
Revision:
87:7e575d26d6d0
Parent:
86:398da56ef751
Child:
88:b5c1d9d338d1

File content as of revision 87:7e575d26d6d0:

#include "Global.h"



unsigned int VibroReg = 0;   //регистр состаяния вибропривода.
unsigned long Global_Time, Time_UART,Time_Sec,Time_vibro,Time_1kHz;
unsigned long MaxAmp=0;
unsigned char BuffTemp[100];
unsigned char Time[500];
unsigned int 	Event1Hz;
unsigned int 	Event1K ;  
unsigned int 	Event100K;  
unsigned int 	EventVibro;  
unsigned int 	Time1K;  
unsigned int 	Time100K; 
unsigned int 	Time1Hz;  
unsigned int 	Clock1Hz;  
unsigned int    ShiftD;
unsigned int    ShiftL;

void GLD_Init(void)
{
/////////////////////////////////////////////
///////////обнуление счетчиков///////////////
/////////////////////////////////////////////
	Global_Time	= 0;
	Time_UART	= 0;
	Time_Sec	= 0;
	Time_vibro	= 0;
	Time_1kHz   = 0;
	Event1Hz 	= 0;
	Event1K 	= 0;  
	Event100K 	= 0;
	EventVibro 	= 0; 
	Time1K 		= 0; 
	Time100K	= 0; 
	Time1Hz		= 0;  
	Clock1Hz	= 0;  
	ShiftD		= 0;
	ShiftL		= 0;
/////////////////////////////////////////////
/////////////////////////////////////////////

	/*
	Gyro.SOC_Out=0xDD;
    Gyro.Firmware_Version	=0x15; //версия программы
    Gyro.GLD_Serial 		= 0x20; //серийный номер
    Gyro.My_Addres			= 0; //адрес глд
    Gyro.Discharg = StartDischarg;
    Gyro.BackLight = StartBackLight;
 	*/
 	
 	
  	/////////////////////////////////////////////////////
 	////////инициализация цап (р0.26 цап выход)//////////
 	//////////////////середина шкалы/////////////////////
 	/////////////////////////////////////////////////////
    LPC_PINCON->PINSEL1 = 0x00200000;	
   	/////////////////////////////////////////////////////
 	////////////начальное значение для цап///////////////
 	//////////////////середина шкалы/////////////////////
 	/////////////////////////////////////////////////////
 	Spi.DAC_A = 0x7fff;
    Spi.DAC_B = 0x7fff;
    ////////////////////////////////////////////////////
    /////////////поправочный коэффициент/////////////////
    /////////для цапов (граници +-12.5 вольт)////////////
    /////////////////////////////////////////////////////
    K_DAC=65535.0/(65535.0+(deltaDAC+deltaDAC/2));
    K_DAC=0.8;
	/////////////////////////////////////////////////////
    /////////////////////////////////////////////////////



    secPuls =0;// переменная для конопки поджига аск глд(временная)
   

    /////////////////////////////////////////////////////
    /////////////обнуление переменых для/////////////////
    ///////////////переменных энкодера///////////////////
    /////////////////////////////////////////////////////
    Cur_QEI=0; 
    Last_QEI=0;
    /////////////////////////////////////////////////////
    /////////////инициализация энкодера//////////////////
    ///////////////////////////////////////////////////// 
    LPC_SC->PCONP |= (1<<18);//0x00040000;		включение квадратурного энкодера.
    LPC_SC->PCLKSEL1 |= 0x00000001;	   // выбор частоты для кв.э. CLK=100MHz
    LPC_PINCON->PINSEL3 &= ~0x4100;
    LPC_PINCON->PINSEL3 |= 0x4100;	  //P1.20, p1.23 установить как входы кв.э
    LPC_PINCON->PINMODE3 |= 0x3C300;	  //P1.20, p1.23, p1.24 ??are pulled-down??(притянуть к питанию)????

    LPC_QEI->MAXPOS = MAX_QEI_CNT;	//LPC_QEI->"регистор максимального положения" = 2147483646
    LPC_QEI->FILTER = 2;		   // фильтр( ?? )
    LPC_QEI->CON = 0xF;				//сбросить в ноль все счетчики кв.э. (скорость, направление, позицию и тд)
    LPC_QEI->CONF = (0<<2) |(0<<1);	//Quadrature inputs, no inverting,only A pulses are counted

    LPC_QEI->CLR = 0x1fff; 			 //r. сбросить все прерывания
    LPC_QEI->IEC = 0x1fff;			 //r. запретить прерывание при изменении направления

    NVIC_SetPriority(QEI_IRQn, 0);
    NVIC_EnableIRQ(QEI_IRQn);
   //////////////////////////////////////////////////////
   //////////////////////////////////////////////////////

    
    
    /////////////////////////////////////////////////////
    /////////////обнуление переменых для/////////////////
    ///////////расчета значений буферов ВП///////////////
    /////////////////////////////////////////////////////
    
    
    /////////////инициализация переменных в структ вибро/////////////////
    Gyro.FrqHZ=449;
    Gyro.Frq = Gyro.FrqHZ<<16;
    Gyro.AmpPer=20;
    Gyro.AmpPerDel=10;
    Gyro.Amp  = 10*65535;
    Gyro.AmpMin =10;// минимальное  значение AmpT;
    Gyro.AmpTD =30;// максимальное значение AmpT; (AmpT частота ошумления)
    //////////////////////////////////////////////////////////////////////
    
    CuruAngle 		= 0;
    Pulse_8Point 	= 0;
    Pulse_16Point 	= 0;
    Pulse_16PointD	= 0;
    Pulse_32Point 	= 0;
    /////////////////////////////////////////////////////
    /////////////предварительное заполнение//////////////
    ////////////////буферов вибропривода/////////////////
    /////////////////////////////////////////////////////
    	for (int i = 0; i < 32; i++ ) {

        Buff_16Point[i] 	= 0x00;
        Buff_8Point[i] 		= 0x00;
        Buff_32Point[i] 	= 0x00;
        Buff_16PointD[i] 	= 0x00;
    }
    ////////////////////////////////////////////////////
    //////////////////////////////////////////////////// 






    /////////////////////////////////////////////////////
    /////////////обнуление переменых для/////////////////
    //////////////////переменных ацп/////////////////////
    /////////////////////////////////////////////////////
    Temp_AMP=0;
    Temp_ADC_2=0;
    Temp_ADC_3=0;
    Temp_ADC_4=0;
    Temp_ADC_5=0;
    /////////////////////////////////////////////////////
    /////////////предварительное заполнение//////////////
    /////////////////////буферов АЦП/////////////////////
    ///////////////////////////////////////////////////// 
        for (int i = 0; i < 16; i++ ) {
        Buff_ADC_1[i] 		= 0;	// ампл ацп.
        Buff_ADC_2[i] 		= 0;
        Buff_ADC_3[i] 		= 0;
        Buff_ADC_4[i] 		= 0;
        Buff_ADC_5[i] 		= 0;
    }
    ////////////////////////////////////////////////////
    //////////////////////////////////////////////////// 


   
   
   

  	/////////////////////////////////////////////////////
 	/////////////////инициализация ног///////////////////
 	/////////////////////////////////////////////////////
    Gyro.PinRegOld  = 0xffffffff;
    Gyro.PinReg     = 0;        // всЁ выключенно
    PinCheng(); 
   
   
    /////////////////////////////////////////////////////
    //////////////отладочный светодиод///////////////////                          
    /////////////////////////////////////////////////////
    LPC_PINCON->PINSEL0 = (0x00<<28);         // а нужно, ведь по умолчаниб у них 0 функция. попробоввать без них потом убрать
    LPC_PINCON->PINMODE0 = (0x3<<28);
    LPC_GPIO1->FIODIR   |= (1<<30);
    /////////////////////////////////////////////////////
    /////////////////////////////////////////////////////
     
     
    /////////////////////////////////////////////////////
    ////////////////управление уартом////////////////////                          
    /////////////////////////////////////////////////////
    LPC_GPIO2->FIODIR   |= (1<<7);                          
    /////////////////////////////////////////////////////
    /////////////////////////////////////////////////////
              
             
               
    /////////////////////////////////////////////////////
    ////////////////?????????????????////////////////////                          
    /////////////////////////////////////////////////////           
    LPC_PINCON->PINSEL0 &= ~(3<<8);       //e. P0.4 is GPIO pin (запись ( 00 ) в 9:8 бит PISEL0    выбор P0.4 как GPIO)
    LPC_PINCON->PINMODE0 |= (3<<8);       //e. P0.4 is GPIO pin (запись ( 11 ) в 9:8 бит PINMODE0  "для включения подтягивающего резистора")
    LPC_GPIO0->FIODIR   |= (1<<4);      //e. P0.4 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.4 как выход)
    /////////////////////////////////////////////////////
    /////////////////////////////////////////////////////
    
    
    
    /////////////////////////////////////////////////////
    /////////////////////вибро 1/////////////////////////                          
    /////////////////////////////////////////////////////
    LPC_PINCON->PINSEL3   = (0x00<<18);       //e. P1.25 is GPIO pin
    LPC_PINCON->PINMODE3 |= (3<<18);      //e. P1.25  (включениe подтягивающего резистора")
    LPC_GPIO1->FIODIR    |= (1<<25);        //e. P0.5 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.5 как выход)
    LPC_GPIO1->FIOCLR    |= (1<<25);
	//////////////////////////////////////////////////////
	/////////////////////вибро 2/////////////////////////                          
    /////////////////////////////////////////////////////
    LPC_PINCON->PINSEL3   = (0x00<<24);       //e. P1.28 is GPIO pin
    LPC_PINCON->PINMODE3 |= (3<<24);      //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0  "для включения подтягивающего резистора")
    LPC_GPIO1->FIODIR    |= (1<<28);        //e. P1.28 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.5 как выход)
    LPC_GPIO1->FIOCLR    |= (1<<28);
    /////////////////////////////////////////////////////
    /////////////////////////////////////////////////////
    
    
    
    /////////////////////////////////////////////////////
    /////////////инициализация подсветки/////////////////                          
    /////////////////////////////////////////////////////
    LPC_PINCON->PINSEL2   = (0x00<<24);     //e. P2.12 is GPIO pin
    LPC_PINCON->PINMODE3 |= (3<<24);      //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0  "для включения подтягивающего резистора")
    LPC_GPIO2->FIODIR    |= (1<<12);        //e. P1.28 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.5 как выход)
    LPC_GPIO2->FIOCLR    |= (1<<12);
	///////////////////////////////////////////////////////
   	///////////////////////////////////////////////////////
   	
   	
   	
   	
   	
    ///////////////////////////////////////////////////////  
    ///////////////////////////////////////////////////////
    init_timer(TIME_INTERVAL ); //Timer 1: CCLK / 7812 = 12800.819Hz; Vibro: Timer1/32 = 400.025Hz; 10ms???
    enable_timer1();
    Init_TIM2();				//Timer 2: CCLK / 4 / 250 = 100kHz
    enable_timer2();
    
    LPC_GPIO0->FIOCLR = (1<<5);/////////////??????????????????????????
}

void ButtonLightUP(void)				// включение аоджига и подсветки
{

			if ((secPuls>100)&&(pulse_Rq==1))
			 {
				 pulse_Rq=0;
//				 LightUpCount=3000;
//				 BackLightCount=5000;

			 }
}