forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Revision:
190:289514f730ee
Parent:
189:8a16378724c4
Child:
191:40028201ddad
--- a/SPI.c	Mon Aug 22 10:39:08 2016 +0000
+++ b/SPI.c	Tue Aug 23 14:03:16 2016 +0000
@@ -3,13 +3,12 @@
 //unsigned int Temp_AMP;
 unsigned int Temp_AMP64P;
 
-int ttt = 0;
 unsigned int Count_AMP, ADD_AMP, Cur_Amp;
 int Znak_Amp;
 int AD_Regul = 0;
-int temp9;
+int temp9,tempADC5;
 int AD_MAX=0;
-int k=0,l=0,r=0;
+int k=0,l=0,r=0;//счетчики для регулировки периметра
 int flagmod=0,Bdelta;
 
 unsigned int Temp_ADC_2;
@@ -73,10 +72,7 @@
     while (LPC_SSP0->SR & RX_SSP_notEMPT) 	{
     DummySPI = LPC_SSP0->DR;   //если буфер SPI не пуст.//очистить буфер.
     }
-
-
     DAC_OutPut();
-
     if (CountV31 == 0) {						// просто фильтруем по 32 точкам.
         // выставояем бит, что есть новы данные
         Spi.ADC1 = Spi.ADC1_Accum >> 5;			// подгоотавливаем данные (в той эе сетке) те 	 ADC1  0..65535
@@ -95,9 +91,7 @@
 
 }
 
-
-
-void ShowMod(void)//технологическая функция для просмотра мод на всем диапазпне цап
+void ShowMod(void)//технологическая функция для просмотра в ориджине мод на всем диапазпне цап
 {
 	
     //////////////////////////////////////////////////////////////////////////////////////////////////
@@ -125,25 +119,26 @@
     int PLC_In;
     int tempDac;
 
-
-    PLC_In = Gyro.AD_Slow;											//выбираем даные для фильтрации
+  if(!(Gyro.PinReg & PinRegBitL))  PLC_In = Gyro.AD_Slow;	//выбираем даные для фильтрации
+  										
    // PLC_In = (unsigned int)(PLC_In>>1);	
     Gyro.PLC_Delta 	  = PLC_In - Gyro.PLC_Old;						// узнаем приращение
     Gyro.PLC_DeltaADD = Gyro.PLC_Delta * Gyro.PLC_ADC_DOld;			//приращение с учетом знака (и количества) прошлого приращения
     Gyro.PLC_Old 	  = PLC_In;										// запоминание значения
     
     if(Gyro.flagGph_W){AD_MAX=0; Gyro.flagGph_W--; Gyro.PLC_Error2Mode=3;}   //если изменился коэфициент усиления ФД  //3600 (размер моды порядка 3000)
-    if((Gyro.PLC_Lern < 150) && (Gyro.PLC_Error2Mode != 0)) {     		//пробигаем по нескольким значениям цап(60*0х3с=0хВВ8) для определения максимальной амплитуды.
-        Gyro.PLC_Lern++;                                          		//инкрементируем счетчик поиска максимальной амплитуды
+    if((!(Gyro.PinReg & PinRegBitL)) && (Gyro.PLC_Lern < 150) && (Gyro.PLC_Error2Mode != 0)) {     		//пробигаем по нескольким значениям цап(60*0х3с=0хВВ8) для определения максимальной амплитуды.
+        //Gyro.PLC_Lern++;                                          		//инкрементируем счетчик поиска максимальной амплитуды
         Spi.DAC_B += 0x3c;                                        		//добовляем в значение цапа 60
-        if(AD_MAX < PLC_In){AD_MAX = PLC_In;}    	 	//если максимальная амплитуда меньше текущей записываем новую максимальную амплитуду.      
-        else if ((AD_MAX>PLC_In)&&(AD_MAX>1500800000)) r++;    	//если текущая амплитуда меньше максимально найденной то инкрементируем счетчик.
+        if(AD_MAX < PLC_In){AD_MAX = PLC_In;}    	 	                 //если максимальная амплитуда меньше текущей записываем новую максимальную амплитуду.      
+        else if ((AD_MAX>PLC_In)&&(AD_MAX>1500800000)) r++;    	         //если текущая амплитуда меньше максимально найденной то инкрементируем счетчик.
         if      (r>10){Gyro.PLC_Lern=150;Gyro.PLC_Error2Mode=8;}         //если текущая амплитуда меньше максимально найденной в течении 5 тактов то выходим из поиска
                          
         Gyro.CuruAngle = 0;   //не считаем угол пока ищем максивальную амплитуду.
     } //работает только первые ~30-40 секунд (37 сек).
-
-
+    
+    if (Gyro.PLC_Lern<250) Gyro.PLC_Lern++;          
+   // if (Gyro.PLC_Lern<20)AD_MAX=0;
     
     if(AD_MAX < PLC_In) {AD_MAX = PLC_In; l=0;}                      //обновление максимального значения амплитуды обнуление счетчика малого понижения амплитуды.                  
     else l++;                                   
@@ -165,7 +160,7 @@
         else                                 { Gyro.PLC_ADC_DOld =  1;}
     } 
     else {Gyro.PLC_Error2Mode = 1; Gyro.PLC_DeltaADD = 0;}///прыжок с моды на моду.
-
+/*
     if(Gyro.ModJump==1) {            ///прыжок с моды на моду. (-->)   
        Gyro.ModJump=0;
        Spi.DAC_B += 12500;
@@ -176,10 +171,12 @@
        Gyro.ModJump=0;
        Spi.DAC_B -= 12500;
        Gyro.PLC_Error2Mode=4;
-    } 
-    if (Bdelta>20)
-    {AD_MAX=1510800000;}
-    if(Gyro.RgConA&0x8) {
+    } */
+    /*if (Bdelta>20)
+    {AD_MAX=1510800000;}*/ 
+    tempADC5=0x7fff-Spi.ADC5;
+    
+    if((Gyro.RgConA&0x8) && (tempADC5>1000) && (!(Gyro.PinReg & PinRegBitL))) {
    		      if(Gyro.PlC_MaxD>(50<<17)) {							// 3 режим регулирования
       		  tempDac=(unsigned int)(Gyro.PlC_MaxD>>19);
      		  if(tempDac>600) {tempDac=600;  Bdelta++; } //ограничение на регулирование если очень большая разница амплитуд
@@ -223,7 +220,7 @@
     //////////лог//////////
     ///////////////////////
     if(Gyro.LogPLC==1) {
-        sprintf((Time),"%d %d %d %d %d %d %d %d %d %d\r\n", Gyro.AD_Slow, temp9, r, tempDac, flagmod, AD_MAX, PLC_In, (Gyro.Frq>>16), Gyro.Frq, Gyro.In2);//выдаем в терминал для постройки граффика регулировки периметра.
+        sprintf((Time),"%d %d %d %d %d %d %d %d %d %d\r\n", l, temp9, r, tempDac, flagmod, AD_MAX, PLC_In, 0x7fff-Spi.ADC5,0,0);//выдаем в терминал для постройки граффика регулировки периметра.
         WriteCon(Time);
     }
 }