forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Global.c

Committer:
Kovalev_D
Date:
2016-03-24
Revision:
88:b5c1d9d338d1
Parent:
87:7e575d26d6d0
Child:
89:a0d344db227e

File content as of revision 88:b5c1d9d338d1:

#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.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.SOC_Out=0xDD;
    Gyro.Firmware_Version	=0x15; //версия программы
    Gyro.GLD_Serial 		= 0x20; //серийный номер
    Gyro.My_Addres			= 0; //адрес глд
    Gyro.Discharg = StartDischarg;
    Gyro.BackLight = StartBackLight;
    */


    /////////////////////////////////////////////////////
    //////инициализация цап_LPC (р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.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);
    ///////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////





    ///////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////
    ///инициализация таймеров///
    ///    9 и 100 кГц       ///
    ////////////////////////////
    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);/////////////??????????????????????????
}