Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LG2 by
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
Generated on Thu Jul 14 2022 02:34:42 by
1.7.2
