Dmitry Kovalev / Mbed 2 deprecated LGstaandart

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Global.c Source File

Global.c

00001 #include "Global.h"
00002 
00003 unsigned int    VibroReg = 0;   //регистр состаяния вибропривода.
00004 unsigned long   Global_Time, Time_UART,Time_Sec,Time_vibro,Time_1kHz;
00005 float t1;
00006 unsigned char   BuffTemp[100];
00007 unsigned char   Time[1000];
00008 unsigned int    Event1Hz;
00009 unsigned int    Event100Hz;
00010 unsigned int    Event250Hz;
00011 unsigned int    Event500Hz;
00012 unsigned int    Event1K;
00013 unsigned int    Event1250Hz;
00014 unsigned int    Event5K;
00015 unsigned int    Event100K;
00016 unsigned int    EventVibro;
00017 unsigned int    MODFlag=0;
00018 unsigned int Time250Hz;
00019 unsigned int Event250Hz;
00020 
00021 unsigned int    Time100K;
00022 unsigned int    Time1K;
00023 unsigned int    Time1250Hz;
00024 unsigned int    Time5K;
00025 unsigned int    Time500Hz;
00026 unsigned int    Time250Hz;
00027 unsigned int    Time1Hz;
00028 unsigned int    Time100Hz;
00029 unsigned int    Clock1Hz;
00030 unsigned int    ShiftD;
00031 unsigned int    ShiftL;
00032 
00033 
00034 
00035 
00036 
00037  int BuffADC_1Point         [600];
00038  int BuffADC_1Point_64      [100];
00039  int BuffADC_1Point_Recalc  [100];
00040  
00041  int BuffADC_128Point       [100];  
00042  int BuffADC_64Point        [100];
00043  
00044  int BuffPLC_FILT           [20];
00045  unsigned int C_PLC_F=0;
00046  
00047  int BuffADC_32Point        [100];
00048  int BuffADC_16Point        [100];
00049  
00050  int BuffADC_10HFO          [100];
00051  int BuffADC_10v            [100];
00052  
00053  int BuffADC_10v_OLD        [100];
00054  int BuffADC_10v_F          [100];
00055  int BuffADC_znak           [100];
00056 
00057 int Buff_Restored_Mod           [100];
00058 int Buff_PLC_Eror               [100];
00059 int BSinMns             [100];
00060 int BSinPls             [100];
00061 int ADC_1Point          =0;
00062 int ADC_32PointD        =0;
00063 
00064 int ADC_128Point    =0;
00065 int ADC_64Point     =0;
00066 int ADC_32Point     =0;
00067 int ADC_16Point     =0;
00068 //unsigned int    EventMod;
00069 
00070 
00071 __asm void boot_jump( uint32_t address ){
00072    LDR SP, [R0]         ;Load new stack pointer address
00073    LDR R0, [R0, #4]     ;Load new program counter address
00074    BX R0
00075 }
00076 
00077 void Param_init(void)
00078 {
00079     int temp=0;
00080     
00081     InitMOD();
00082      for(int q=0; q<20; q++)
00083             {
00084                 BuffPLC_FILT  [q] = 0;
00085             }
00086 Gyro.CuruAngleLog=0;
00087     Global_Time = 0;
00088     Time_UART   = 0;
00089     Time_Sec    = 0;
00090     Time_vibro  = 0;
00091     Time1250Hz  = 0;
00092     Time_1kHz   = 0;
00093     Event1Hz    = 0;
00094     Event1K     = 0;
00095     Event100K   = 0;
00096     EventVibro  = 0;
00097     Time1K      = 0;
00098     Time100K    = 0;
00099     Time1Hz     = 0;
00100     Clock1Hz    = 0;
00101     ShiftD      = 0;
00102     ShiftL      = 0;
00103     Event500Hz  = 0;
00104     Time500Hz   = 0;
00105   
00106     Temp_AMP64P     = 0;
00107 
00108     Gyro.Log        = 0;
00109     Gyro.LogPLC     = 0;
00110     Gyro.PLC_Lern   = 0;
00111     Gyro.CuruAngle  = 0;
00112     Pulse_8Point    = 0;
00113     Pulse_16Point   = 0;
00114     Pulse_16PointD  = 0;
00115     Pulse_32Point   = 0;
00116     Gyro.FlashMod   = 0;
00117    
00118    
00119 /////////////////////////////////////////////
00120 ///////////инициализация таймеров////////////
00121 /////////////////////////////////////////////
00122 Init_TIM1(TIME_INTERVAL ); //Timer 1: CCLK / 7812 = 12800.819Hz; Vibro: Timer1/32 = 400.025Hz; 10ms???
00123 Init_TIM2();                //Timer 2: CCLK / 4 / 250 = 100kHz
00124 /////////////////////////////////////////////
00125     /////////////инициализация переменных в структ вибро/////////////////
00126     
00127     Gyro.DropDelayGLD = DropDelayGLD_0;//задержка на выдачу 45 микросекунд для любого адреса ГЛД
00128     Gyro.PLC_Error2Mode     = 1400;
00129     Gyro.SOC_Out            = 0xDD;
00130    
00131     Gyro.RgConMod           = 1;
00132     
00133     GyroP.Str.ParamMod=0;
00134     
00135   ReadFlash ();
00136    //  GyroP.Str.ParamMod=0;
00137     if(GyroP.Str.ParamMod==1)
00138     {           
00139     Gyro.ShowMod2=0;
00140                 Gyro.TimeToJump         = GyroP.Str.TimeToJump;                                                 
00141                 Gyro.JumpDelta          = GyroP.Str.JumpDelta;   
00142                 Gyro.ShiftMod           = GyroP.Str.ShiftMod;
00143                 Gyro.PLC_Start          = 0x7fff+GyroP.Str.PLC_Start;
00144                 Gyro.DownTreshold       = (unsigned int)((GyroP.Str.DownTreshold-0x7fff)&0xffff);                                                           //27
00145                 Gyro.HighTreshold       = (unsigned int)((GyroP.Str.HighTreshold-0x7fff)&0xffff);
00146                 Gyro.PLCDelay           = GyroP.Str.PLCDelay;   
00147                 Gyro.ResetLevelCool     = (unsigned int)((GyroP.Str.ResetLevelCool-0x7fff)&0xffff);                                                         //105
00148                 Gyro.ResetLevelHeat     = (unsigned int)((GyroP.Str.ResetLevelHeat-0x7fff)&0xffff);
00149                 Gyro.HFO_Gain           = GyroP.Str.HFO_Gain;
00150                 Gyro.HFO_ref            = (unsigned int)(GyroP.Str.HFO_ref);
00151                 Gyro.LG_Type            = GyroP.Str.LG_Type;
00152                 Gyro.LG_Type = 1;
00153                 Gyro.My_Addres          = GyroP.Str.My_Addres;                               //  Gyro.My_Addres         = 0; 
00154                 Gyro.GLD_Serial         = GyroP.Str.GLD_Serial;         
00155                 Gyro.FrqHZ              = (7680000/GyroP.Str.FrqHZ);
00156                 Gyro.Frq                = ((7680000/GyroP.Str.FrqHZ)<<16);
00157                 Gyro.FrqHZmin           = ((7680000/GyroP.Str.FrqHZmin)<<16);
00158                 Gyro.FrqHZmax           = ((7680000/GyroP.Str.FrqHZmax)<<16);
00159                 Gyro.FrqChengSpeed      = GyroP.Str.FrqChengSpeed;
00160                 Gyro.PLC_Gain           = GyroP.Str.PLC_Gain;
00161                 Gyro.PLC_Phase          = GyroP.Str.PLC_Phase;
00162                 Gyro.ModAmp             = GyroP.Str.ModAmp;
00163                 Gyro.FrqPhase           = GyroP.Str.FrqPhase;
00164                 Gyro.AmpPer             = 700;//GyroP.Str.AmpPer*100;
00165                 Gyro.Amp                =(GyroP.Str.AmpPer<<17);
00166                 Gyro.AmpSpeed           = GyroP.Str.AmpSpeed;
00167                 Gyro.AmpPerDel          = GyroP.Str.AmpPerDel;
00168                 temp=((GyroP.Str.VB_Fdf_Hi<<16) | GyroP.Str.VB_Fdf_Lo);
00169                 temp=temp*20;
00170                 Gyro.AmpTarget=(unsigned int)(temp);
00171                 Gyro.AmpPerMin          = GyroP.Str.AmpPerMin;
00172                 Gyro.AmpPerMax          = GyroP.Str.AmpPerMax;
00173                 Gyro.AmpMin             = GyroP.Str.AmpMin;
00174                 Gyro.AmpTD              = GyroP.Str.AmpTD;
00175                 F_vib=(103200000<<5)/((Gyro.Frq)>>10);//периуд вибро.
00176                 T_vibP = F_vib/10000;
00177                 T_vib_1 = Gyro.AmpPer * T_vibP;
00178                 T_vib_2 = T_vibP * (10000-Gyro.AmpPer);
00179         LPC_MCPWM->LIM1 = F_vib;
00180         LPC_MCPWM->LIM2 = F_vib;
00181         LPC_MCPWM->MAT1 =  T_vib_1;
00182         LPC_MCPWM->MAT2 =  T_vib_2;
00183                 if(Gyro.LG_Type==1){ 
00184                //Gyro.HFO_Max=((int)(GyroP.Str.DAC_current_Work*0.67)-2000);
00185                  Gyro.HFO_Max=0xffff-GyroP.Str.DAC_current_Work;
00186                  
00187                //Gyro.HFO_Min=((int)(GyroP.Str.DAC_current_Start*0.67)-2000);
00188                  Gyro.HFO_Min= 0xffff-GyroP.Str.DAC_current_Start; 
00189                 } 
00190                 else                Spi.DAC_A = ((((int)(GyroP.Str.DAC_current_Work+0x7fff)  & 0xffff)+22544)*0.65);    
00191                 Gyro.DacIn              = GyroP.Str.DAC_current_Work;
00192         //      Gyro.TermoNKU           = GyroP.Str.TermoNKU<<2;
00193                 Gyro.Firmware_Version   = 0x11;
00194             //  Spi.DAC_A               = GyroP.Str.DAC_A;
00195             //  Spi.DAC_B               = GyroP.Str.DAC_B;
00196                 Gyro.Gain_Sin           = GyroP.Str.Gain_Sin;
00197                 Gyro.Gain_Cos           = GyroP.Str.Gain_Cos;
00198                 Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos);  
00199    }
00200     else
00201     {
00202     Gyro.DownTreshold       = GyroP.Str.DownTreshold;                                                               //27
00203     Gyro.HighTreshold       = GyroP.Str.HighTreshold;   
00204     Gyro.PLCDelay           = 5000;     
00205     Gyro.ResetLevelCool     = 56000;                                                                //105
00206     Gyro.ResetLevelHeat     = 15000;
00207     Gyro.HFO_ref            = 13000;
00208     Gyro.LG_Type            = 0;
00209     Gyro.PLC_Phase          = 3;
00210     Gyro.PLC_Gain           = 3;
00211     Gyro.FrqPhase           = 8;
00212     Gyro.FrqHZ              = 403;
00213     Gyro.Frq                = Gyro.FrqHZ<<16;
00214     Gyro.FrqHZmin           = 350<<16;
00215     Gyro.FrqHZmax           = 450<<16;
00216     Gyro.FrqChengSpeed      = 100;
00217     Gyro.ModAmp             = 250;
00218     Gyro.AmpPer             = 20;
00219     Gyro.AmpPerMin          = 2;
00220     Gyro.AmpPerMax          = 90;
00221     Gyro.AmpSpeed           = 1;
00222     Gyro.AmpPerDel          = 3;
00223     Gyro.AmpTarget          = 5500;// целевая амплитуда ВП
00224     Gyro.Amp                = 20*65535;
00225     Gyro.AmpMin             = 20;// минимальное  значение AmpT;5
00226     Gyro.AmpTD              = 20;////////////////////////////////////////////////////////
00227     Gyro.TermoNKU           = 44700;//48824*0,0061-273=25 С°
00228     Spi.DAC_B               = Gyro.PLC_Start;
00229     Gyro.PLC_Error2Mode     = 1400; //для записи мод  
00230     Gyro.Gain_Sin           = 175;
00231     Gyro.Gain_Cos           = 215; 
00232     Gyro.Firmware_Version   = 0x11; //версия программы
00233     Gyro.GLD_Serial         = 123; //серийный номер
00234     Gyro.My_Addres          = 0; //адрес глд
00235     Gyro.Tmp_OffsetT4       = 0;
00236     Gyro.Tmp_OffsetT5       = 0;
00237     Gyro.Tmp_scaleT4        = 1;                                //53                        
00238     Gyro.Tmp_scaleT5        = 1;
00239     
00240     Gyro.DAC_current_Work   =50000;                         //3
00241     Gyro.DAC_current_Start  =41000;      
00242 
00243 
00244             F_vib=(103200000<<5)/((Gyro.Frq)>>10);//периуд вибро.
00245                 T_vibP = F_vib/10000;
00246                 T_vib_1 = Gyro.AmpPer * T_vibP;
00247                 T_vib_2 = T_vibP * (10000-Gyro.AmpPer);
00248         LPC_MCPWM->LIM1 = F_vib;
00249         LPC_MCPWM->LIM2 = F_vib;
00250         LPC_MCPWM->MAT1 =   T_vib_1;
00251         LPC_MCPWM->MAT2 =  T_vib_2;
00252     }
00253     Spi.DAC_B=Gyro.PLC_Start;
00254     switch(Gyro.My_Addres){//смещение поджига и подсветки в зависимости от адреса ГЛД
00255     case 0:
00256     Gyro.Discharg  = StartDischarg  << ShiftStart0;
00257     Gyro.BackLight = StartBackLight << ShiftStart0;
00258     break;
00259     case 1:
00260     Gyro.Discharg  = StartDischarg  << ShiftStart1;
00261     Gyro.BackLight = StartBackLight << ShiftStart1;
00262     break;
00263     case 2:
00264     Gyro.Discharg  = StartDischarg  << ShiftStart2;
00265     Gyro.BackLight = StartBackLight << ShiftStart2;
00266     break;
00267     case 3:
00268     Gyro.Discharg  = StartDischarg  << ShiftStart3;
00269     Gyro.BackLight = StartBackLight << ShiftStart3;
00270     break;
00271     }
00272     
00273     /////////////////////////////////////////////////////
00274     //////инициализация цап_LPC (р0.26 цап выход)////////
00275     /////////////////////////////////////////////////////
00276     LPC_PINCON->PINSEL1 = 0x00200000;
00277     /////////////////////////////////////////////////////
00278     ////////////начальное значение для цап///////////////
00279     //////////////////середина шкалы/////////////////////
00280     /////////////////////////////////////////////////////
00281 
00282     ////////////////////////////////////////////////////
00283     /////////////поправочный коэффициент/////////////////
00284     /////////для цапов (граници +-12.5 вольт)////////////
00285     /////////////////////////////////////////////////////
00286     K_DAC=65535.0/(65535.0+(deltaDAC+deltaDAC/2));
00287     K_DAC=0.8;
00288 
00289     /////////////////////////////////////////////////////
00290     /////////////обнуление переменых для/////////////////
00291     ///////////////переменных энкодера///////////////////
00292     /////////////////////////////////////////////////////
00293     secPuls =0;// переменная для конопки поджига аск глд(временная)
00294     Gyro.CaunPlus   =0;
00295     Gyro.CaunMin    =0;
00296     Cur_QEI=0;
00297     Last_QEI=0;
00298 }
00299 void BUTTON_init(void) {
00300   LPC_GPIO0->FIODIR      &= ~(1 << 1);    /* PORT2.10 defined as input       */
00301   LPC_GPIOINT->IO0IntEnF |=  (1 << 1);    /* enable falling edge irq         */
00302 
00303   NVIC_EnableIRQ(EINT3_IRQn );              /* enable irq in nvic              */
00304 }
00305 /*void EINT3_IRQHandler()
00306 {
00307   if(Gyro.EXT_Latch)Gyro.EXT_Latch=0;
00308   else Gyro.EXT_Latch=1;
00309   LPC_GPIOINT->IO2IntClr |= (1 << 10);    
00310 }*/
00311 void GLD_Init(void)
00312 {    
00313                 int Dummy; // инициализация мусорки для очистки буфера приема.
00314      BUTTON_init();      
00315 
00316     if(Gyro.LG_Type==1)Spi.DAC_A=Gyro.HFO_Max;
00317 
00318 
00319 
00320     /////////////////////////////////////////////////////
00321     /////////////инициализация энкодера//////////////////
00322     /////////////////////////////////////////////////////
00323     
00324     LPC_SC->PCONP |= (1<<18);//0x00040000;      включение квадратурного энкодера.
00325     LPC_SC->PCLKSEL1 |= 0x00000001;    // выбор частоты для кв.э. CLK=103MHz
00326     LPC_PINCON->PINSEL3 &= ~0x4100;
00327     LPC_PINCON->PINSEL3 |= 0x4100;    //P1.20, p1.23 установить как входы кв.э
00328     LPC_PINCON->PINMODE3 |= 0x3C300;      //P1.20, p1.23 
00329 
00330     //Gyro.ShiftMod=150;
00331     LPC_QEI->MAXPOS = MAX_QEI_CNT;  //LPC_QEI->"регистор максимального положения" = 2147483646
00332     LPC_QEI->FILTER = 2;            // фильтр( ?? )
00333     LPC_QEI->CON = 0xF;             //сбросить в ноль все счетчики кв.э. (скорость, направление, позицию и тд)
00334     LPC_QEI->CONF = (1<<2) |(0<<1); //Quadrature inputs, no inverting,only A pulses are counted
00335 
00336     LPC_QEI->CLR = 0x1fff;           //r. сбросить все прерывания
00337     LPC_QEI->IEC = 0x1fff;           //r. запретить прерывание при изменении направления
00338 
00339   /*NVIC_SetPriority(QEI_IRQn, 0);
00340   NVIC_EnableIRQ(QEI_IRQn);*/
00341     //////////////////////////////////////////////////////
00342     //////////////////////////////////////////////////////
00343 
00344 
00345   //////////////////////////////////////////////////////
00346   ///////////////////////I2C////////////////////////////
00347   //////////////////////////////////////////////////////
00348 
00349   LPC_SC->PCONP |= (1 << 19);//включение интерфейса I2C.
00350 
00351   /* set PIO0.27 and PIO0.28 to I2C0 SDA and SCK */
00352   /* function to 01 on both SDA and SCK. */
00353   LPC_PINCON->PINSEL1 &= ~0x03C00000; //P0.27 - SDA.
00354   LPC_PINCON->PINSEL1 |= 0x01400000;    //P0.28 - SCK.
00355 
00356     //                   подтверждение     Флаг           флаг        разрешения 
00357   /*сброс флагоф          флага    прерывания I2C      старта      интерфейса I2C    */
00358   LPC_I2C0->CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC | I2CONCLR_I2ENC;   // установка микроконтроллера в режим мастера 
00359 
00360   /*--- Reset registers ---*/
00361   LPC_I2C0->SCLL   = I2SCLL_SCLL; // - счетчик scl low time period
00362   LPC_I2C0->SCLH   = I2SCLH_SCLH; // - счетчик scl high time period
00363   
00364     I2CMasterBuffer[0] = A_ADDRESS;  
00365     I2CMasterBuffer[1] = WRITE_CMD;  
00366     I2CMasterBuffer[3] = B_ADDRESS;  
00367     I2CMasterBuffer[4] = WRITE_CMD;  
00368   
00369   LPC_I2C0->CONSET = I2CONSET_I2EN; //включение интерфейса I2C.
00370   //////////////////////////////////////////////////////////
00371   //////////////////////////////////////////////////////////
00372 
00373 
00374 
00375 
00376 
00377 
00378     ///////////////////////////////////////////////////////
00379     ///////////////////////////////////////////////////////
00380     //////////////////////////SPI//////////////////////////
00381     ///////////////////////////////////////////////////////
00382    Dummy = Dummy;
00383 
00384   /* Enable AHB clock to the SSP0, SSP1 */
00385      LPC_SC->PCONP |= (0x1<<21); // включение SSP0.
00386 
00387   /* выбор частоты для переферии используем по умолчания с делителем основной на 4 */
00388    LPC_SC->PCLKSEL1 &= ~(0x3<<10);  //00 CLK/4; 1 CLK; 2 CLK/2; 3 CLK/8
00389    LPC_SC->PCLKSEL1 |= (0x0<<10);   //00 CLK/4; 1 CLK; 2 CLK/2; 3 CLK/
00390 
00391   // P0.15~0.18 as SSP0 
00392   LPC_PINCON->PINSEL0 &= ~(0x3UL<<30);  //установит Р 0.15 
00393   LPC_PINCON->PINSEL0 |=  (0x2UL<<30);  //частота для синхронизациии Master - slave
00394 
00395   LPC_PINCON->PINSEL1 &= ~((0x3<<0)|(0x3<<2)|(0x3<<4)); // устанивоить   Р 0.17    и   Р 0.18
00396   LPC_PINCON->PINSEL1 |=  ((0x2<<2)|(0x2<<4));          //    как         MISO0    и    MOSI0
00397 
00398   LPC_PINCON->PINMODE0 &= ~(0x3UL<<30);// ?  установление на Р 0.15 режима On-Chip pull-down resistor enabled
00399   LPC_PINCON->PINMODE0 |=  (0x3UL<<30);// ?  установление на Р 0.15 режима On-Chip pull-down resistor enabled
00400 
00401   LPC_PINCON->PINMODE1 &= ~((0x3<<2)|(0x3<<4));// ?  установление на Р 0.17 и Р 0.18 режима On-Chip pull-down resistor enabled
00402   LPC_PINCON->PINMODE1 |=  ((0x3<<2)|(0x3<<4));// ?  установление на Р 0.17 и Р 0.18 режима On-Chip pull-down resistor enabled
00403 
00404   LPC_SSP0->CR0 = ((3<<8)|(0<<7)|(0<<4) |0xF); // (0xF)-установление DSS(Data sise select) в 16-битный формат, (3<<8 scr - выбор частоты), 
00405                                                 //   низкий уровень линии тактирования между кадрами, прикрепление передачи к первому нарастанию тактового мигнала
00406                                                                                          //    формат кадра TI.
00407    
00408   /* SSPCPSR clock prescale register, master mode, minimum divisor is 0x02 */
00409   LPC_SSP0->CPSR = 0x2;   // freq = CLK/(cpsdvr*(scr+1)) = 1.6 MHz
00410  
00411  /*SSP enable, master mode     */
00412   LPC_SSP0->CR1 = SSPCR1_SSE;   
00413 //  LPC_SSP1->CR1 = SSPCR1_SSE;
00414    while (LPC_SSP0->SR & SSP_BUSY);
00415    while (LPC_SSP0->SR & RX_SSP_notEMPT)  /* clear the RxFIFO */
00416     Dummy = LPC_SSP0->DR;       
00417   //all pins after reset is in GPIO mode, so CS pins needn't to configure
00418      LPC_GPIO0->FIODIR |= (1<<16);      // P0.16 defined as CS for ADC
00419      LPC_GPIO0->FIOSET |= (1<<16);      // set CS for ADC
00420 
00421     LPC_GPIO0->FIODIR |= (1<<23);       // P defined as CS for DAC
00422     LPC_GPIO0->FIOCLR |= (1<<23);       // set CS for DAC 
00423     while (LPC_SSP1->SR & RX_SSP_notEMPT)
00424     Dummy = LPC_SSP1->DR;   /* clear the RxFIFO */
00425 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
00426 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
00427 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
00428 
00429 
00430 
00431 
00432     /////////////////////////////////////////////////////
00433     /////////////////инициализация ног///////////////////
00434     /////////////////////////////////////////////////////
00435     
00436     /////////////////////////////////////////////////////
00437     Gyro.PinRegOld  = 0xffffffff;
00438     Gyro.PinReg     = 0;        // всЁ выключенно
00439     PinCheng();
00440     /////////////////////////////////////////////////////
00441 Gyro.ModeOut=0; 
00442     /////////////////////////////////////////////////////
00443     //////////////отладочный светодиод///////////////////
00444     /////////////////////////////////////////////////////
00445     
00446     LPC_PINCON->PINSEL0  &= ~(0x00<<28);
00447     LPC_PINCON->PINSEL0  |=  (0x00<<28);   
00448     LPC_PINCON->PINMODE0 |=  (0x3<<28);
00449     LPC_GPIO1->FIODIR    |=  (1<<30);
00450     /////////////////////////////////////////////////////
00451     /////////////////////////////////////////////////////
00452     NVIC_EnableIRQ(EINT3_IRQn );
00453     LPC_GPIOINT->IO0IntEnR |=  (1<<1);    /* enable rasing edge irq         */
00454     /////////////////////////////////////////////////////
00455     ////////////////управление уартом////////////////////
00456     /////////////////////////////////////////////////////
00457     LPC_GPIO2->FIODIR   |= (1<<7);//направление ноги uart enable
00458     /////////////////////////////////////////////////////
00459     /////////////////////////////////////////////////////
00460 
00461 
00462 
00463     /////////////////////////////////////////////////////
00464     ///////////////////////поджиг////////////////////////
00465     /////////////////////////////////////////////////////
00466     LPC_PINCON->PINSEL0  &= ~(3<<8);       //e. P0.4 is GPIO pin (запись ( 00 ) в 9:8 бит PISEL0    выбор P0.4 как GPIO)
00467     LPC_PINCON->PINMODE0 |=  (3<<8);       //e. P0.4 is GPIO pin (запись ( 11 ) в 9:8 бит PINMODE0  "для включения подтягивающего резистора")
00468     LPC_GPIO0->FIODIR    |=  (1<<4);      //e. P0.4 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.4 как выход)
00469     /////////////////////////////////////////////////////
00470     /////////////////////////////////////////////////////
00471 
00472 
00473 
00474     /////////////////////////////////////////////////////
00475     /////////////////////вибро 1/////////////////////////
00476     /////////////////////////////////////////////////////
00477     LPC_PINCON->PINSEL3  &= ~(0x00<<18);       //e. P1.25 is GPIO pin
00478     LPC_PINCON->PINSEL3  |= (0x00<<18);       //e. P1.25 is GPIO pin
00479     LPC_PINCON->PINMODE3 |= (3<<18);      //e. P1.25  (включениe подтягивающего резистора")
00480     LPC_GPIO1->FIODIR    |= (1<<25);        //e. P0.5 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.5 как выход)
00481     LPC_GPIO1->FIOCLR    |= (1<<25);
00482     //////////////////////////////////////////////////////
00483     //////////////////////вибро 2/////////////////////////
00484     //////////////////////////////////////////////////////
00485     LPC_PINCON->PINSEL3   &= ~(0x00<<24);       //e. P1.28 is GPIO pin
00486     LPC_PINCON->PINSEL3   |= (0x00<<24);       //e. P1.28 is GPIO pin
00487     LPC_PINCON->PINMODE3 |= (3<<24);      //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0  "для включения подтягивающего резистора")
00488     LPC_GPIO1->FIODIR    |= (1<<28);        //e. P1.28 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.5 как выход)
00489     LPC_GPIO1->FIOCLR    |= (1<<28);
00490     /////////////////////////////////////////////////////
00491     /////////////////////////////////////////////////////
00492 
00493 
00494 
00495     /////////////////////////////////////////////////////
00496     /////////////инициализация подсветки/////////////////
00497     /////////////////////////////////////////////////////
00498     LPC_PINCON->PINSEL2   &= ~(0x00<<24); 
00499     LPC_PINCON->PINSEL2   |= (0x00<<24);     //e. P2.12 is GPIO pin
00500     LPC_PINCON->PINMODE3 |= (3<<24);      //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0  "для включения подтягивающего резистора")
00501     LPC_GPIO2->FIODIR    |= (1<<12);        //e. P1.28 is output   (запись ( 1 ) в  5  бит FIODIR    выбор P0.5 как выход)
00502     LPC_GPIO2->FIOCLR    |= (1<<12);
00503     ///////////////////////////////////////////////////////
00504     ///////////////////////////////////////////////////////
00505 
00506 
00507     ///////////////////////////////////////////////////////
00508     ///////////////////////////////////////////////////////
00509     ///////////////////включение таймеров//////////////////
00510     ///////////////////////////////////////////////////////    
00511     enable_timer1();
00512     enable_timer2();
00513     ///////////////////////////////////////////////////////
00514     
00515     //////////////////////////////////////////////////////////////////
00516     // LPC_GPIO0->FIOCLR = (1<<5);/////////////отключение поджига
00517     
00518     
00519 
00520     ///////////////////////////////////////////////////////
00521     ///////////////////////////////////////////////////////
00522     //////////////////////////SPI//////////////////////////
00523     ///////////////////////////////////////////////////////
00524    Dummy = Dummy;
00525 
00526   /* Enable AHB clock to the SSP0, SSP1 */
00527      LPC_SC->PCONP |= (0x1<<21); // включение SSP0.
00528 
00529   /* выбор частоты для переферии используем по умолчания с делителем основной на 4 */
00530    LPC_SC->PCLKSEL1 &= ~(0x3<<10);  //00 CLK/4; 1 CLK; 2 CLK/2; 3 CLK/8
00531    LPC_SC->PCLKSEL1 |= (0x0<<10);   //00 CLK/4; 1 CLK; 2 CLK/2; 3 CLK/
00532 
00533   // P0.15~0.18 as SSP0 
00534   LPC_PINCON->PINSEL0 &= ~(0x3UL<<30);  //установит Р 0.15 
00535   LPC_PINCON->PINSEL0 |=  (0x2UL<<30);  //частота для синхронизациии Master - slave
00536 
00537   LPC_PINCON->PINSEL1 &= ~((0x3<<0)|(0x3<<2)|(0x3<<4)); // устанивоить   Р 0.17    и   Р 0.18
00538   LPC_PINCON->PINSEL1 |=  ((0x2<<2)|(0x2<<4));          //    как         MISO0    и    MOSI0
00539 
00540   LPC_PINCON->PINMODE0 &= ~(0x3UL<<30);// ?  установление на Р 0.15 режима On-Chip pull-down resistor enabled
00541   LPC_PINCON->PINMODE0 |=  (0x3UL<<30);// ?  установление на Р 0.15 режима On-Chip pull-down resistor enabled
00542 
00543   LPC_PINCON->PINMODE1 &= ~((0x3<<2)|(0x3<<4));// ?  установление на Р 0.17 и Р 0.18 режима On-Chip pull-down resistor enabled
00544   LPC_PINCON->PINMODE1 |=  ((0x3<<2)|(0x3<<4));// ?  установление на Р 0.17 и Р 0.18 режима On-Chip pull-down resistor enabled
00545 
00546   LPC_SSP0->CR0 = ((3<<8)|(0<<7)|(0<<4) |0xF); // (0xF)-установление DSS(Data sise select) в 16-битный формат, (3<<8 scr - выбор частоты), 
00547                                                 //   низкий уровень линии тактирования между кадрами, прикрепление передачи к первому нарастанию тактового мигнала
00548                                                                                          //    формат кадра TI.
00549    
00550   /* SSPCPSR clock prescale register, master mode, minimum divisor is 0x02 */
00551   LPC_SSP0->CPSR = 0x2;   // freq = CLK/(cpsdvr*(scr+1)) = 1.6 MHz
00552  
00553  /*SSP enable, master mode     */
00554   LPC_SSP0->CR1 = SSPCR1_SSE;   
00555 //  LPC_SSP1->CR1 = SSPCR1_SSE;
00556   while (LPC_SSP0->SR & SSP_BUSY);
00557   while (LPC_SSP0->SR & RX_SSP_notEMPT)  /* clear the RxFIFO */
00558     Dummy = LPC_SSP0->DR;       
00559   //all pins after reset is in GPIO mode, so CS pins needn't to configure
00560      LPC_GPIO0->FIODIR |= (1<<16);      // P0.16 defined as CS for ADC
00561      LPC_GPIO0->FIOSET |= (1<<16);      // set CS for ADC
00562 
00563     LPC_GPIO0->FIODIR |= (1<<23);       // P defined as CS for DAC
00564     LPC_GPIO0->FIOCLR |= (1<<23);       // set CS for DAC 
00565     while (LPC_SSP1->SR & RX_SSP_notEMPT)
00566     Dummy = LPC_SSP1->DR;   /* clear the RxFIFO */
00567 //Gyro=GyroP.str;
00568 //Gyro = (*(struct Gyro*)(&GyroP.Str));
00569 
00570 }
00571 
00572 
00573 
00574 
00575