forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

main.c

Committer:
Kovalev_D
Date:
2016-04-29
Revision:
147:1aed74f19a8f
Parent:
146:2bea299a7c4f
Child:
150:29c9f7671bac

File content as of revision 147:1aed74f19a8f:

//ssdfwewedfsfds
/****************************************Copyright (c)****************************************************
**--------------File Info---------------------------------------------------------------------------------
** File name:           main.c
** Last modified Date:  2011-10-24
** Last Version:        V1.00
** Descriptions:        The main() function
**
**--------------------------------------------------------------------------------------------------------
** Created by:          Electrooptica Incorp.
** Created date:        2011-08-22
** Version:             V1.00
** Descriptions:
**--------------------------------------------------------------------------------------------------------
последнии изменения
//2016_02_03_17_47
//2016_02_06 igor
//2016_06 Dima
//2016_02_06 21:20 Kovalev_D
*********************************************************************************************************/
#include "Global.h"
#include "Device.h"
/******************************************************************************
**   Main Function  main()
******************************************************************************/
extern Device device; //Single global for all device hardware-independent algorithm
unsigned int addres;
uint32_t Result[5];
extern uint32_t CMD_Mode;
unsigned int  secPuls;
float DACF, K_DAC;
int tempAMP;
int temp;
unsigned int status;
unsigned int Para;
int main (void)
{
SystemInit1();  // Инициализация контроллера: установка тактовых частот
SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 100MHz
GLD_Init();

      UART_InitSet (0, 921600, 0x03);  // надо проверить, мож чо с ногам
   // UART_InitSet (1, 921600, 0x03);
      UART_InitSet (1, 115200, 0x03);

    IntLatch_Init();		  // инициализация внутренней защелки.
    ExtLatch_Init();		  // инициализация внешней защелки.
    LoadFlashParam(FromFLASH); 	//загрузка параметров.
    init_PLC();                                //Инициализация СРП(регулировка периметра)
    init_Dither_reg();                         //инициализация вибропривода

    Out_G_photo(200,200);        //запись в буфер мастера принятые от функции данные (60,60) и установка флага старта передачи и занятой шины.
    WriteCon1("\n\r ...GL start programm uart ACK.... ");
    WriteCon("\n\r ...GL start programm uart Tech.... ");
    sprintf(Time,"\r\nCompiled: %s %s.",__DATE__,  __TIME__ );                 //Подготовка даты и времени компиляции
    WriteCon(Time);

Gyro.PLC_Error2Mode = 10;  // начальная задержка (неработает СРП)
    while ( 1 ) { //основной цикл.
       	G_Photo_Exchange();	
        Concol ();				// Проврка 0 консоли  (вход и выход)
        Concol1 ();		        // Проврка 0 консоли  (вход и выход)
        Read_CMD();	
        if (OutBufConCount)  OutBufConCount--;
        if (OutBufCon1Count)  OutBufCon1Count--;
       
        TechLog();//технологическая выдача
    
        Event_100KHz();
        Event_1KHz();
        Event_500Hz();
        Event_1Hz();
        Event_Vibro();
        
	 switch(Gyro.ModeOut) {
     case 1:
            if(Gyro.Rate1_Event    == 1) CMD_Rate();
     break;  
     case 2:
            if(Gyro.Rate2_Event    == 1) CMD_Rate2();
     break;    
     case 3:
            if(Gyro.Delta500_Event == 1) CMD_Delta_500Hz();
     break;   
     case 4:
            if(Gyro.EXT_Latch      == 1) CMD_Delta_Ext();
     break;       		   		
     } 
    if (Spi.ADC_NewData     == 1) {ADS_Acum();								 	}  // был приход новых данных по ацп сдесь сделать обработку информации и подготовку для выдачи делается 1 раз за вибро
	if (Gyro.ADF_NewData    == 1) {Gyro.ADF_NewData = 0;                    	}  // был приход новых данных После быстрого фильтра AD	
	if (Gyro.ADS_NewData    == 1) {Gyro.ADS_NewData = 0;     PlcRegul();     	}  // был приход новых данных После Медленного фильтра AD
    if (Gyro.VibroFrqRegulF == 1) {Gyro.VibroFrqRegulF = 0;	 VibroFrqRegul();	}	//Регулеровка частоты виброподвеса    
    if (Gyro.VibroAMPRegulF == 1) {Gyro.VibroAMPRegulF = 0;	 VibroAMPRegul();   }	//Регулеровка Амплитуды виброподвеса
    if (Gyro.VibroNoiseF    == 1) {Gyro.VibroNoiseF = 0;	 CalcAmpN();	    }//регулеровка ошумления, наверно нужно объеденить с регулеровкой ампитуды
    if(Gyro.VibroOutF       == 1) {Gyro.VibroOutF = 0;		 VibroOut();		}// установка ног в регисторе тоже подумать , зачем отделный флаг? наверно 
    if( (Gyro.LogHZ == 1)&&(Gyro.Event_500Hz==1))				
    {
    	 Gyro.Event_500Hz=0;
     	 sprintf((Time),"%d \r\n",LPC_TIM1->MR0);
         WriteCon(Time);
    }  
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////Работа с Flash//////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
		if(Gyro.FlashMod == 1)		{GoBoot();     }  
		if(Gyro.FlashMod == 2)	    {WriteFlash(); }		
		if(Gyro.FlashMod == 3)		{ReadFlash();  }
   
 }
}//main

/******************************************************************************
**                            End Of File
******************************************************************************/