fork

Dependencies:   mbed

Fork of LG by igor Apu

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