forkd

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Revision:
21:bc8c1cec3da6
Parent:
1:f2adcae3d304
Child:
30:17c84ed091b3
--- a/el_lin.c	Tue Feb 02 17:14:25 2016 +0000
+++ b/el_lin.c	Wed Feb 03 07:19:30 2016 +0000
@@ -2,12 +2,12 @@
 /**--------------File Info---------------------------------------------------------------------------------
 ** File name:           el_lin.c
 ** Last modified Date:  2011-08-22
-** Last Version:        V1.00 
+** Last Version:        V1.00
 **--------------------------------------------------------------------------------------------------------
 ** Created by:          Electrooptica Incor.
 ** Created date:        2011-08-22
 ** Version:             V1.00
-**--------------------------------------------------------------------------------------------------------       
+**--------------------------------------------------------------------------------------------------------
 *********************************************************************************************************/
 
 #include "Global.h"
@@ -17,13 +17,13 @@
 #define UART1REC
 /*
 struct {
-	    uint32_t  rcv_num_byt; 
+	    uint32_t  rcv_num_byt;
 		uint32_t rcv_num_byt_old;
-		uint32_t  rcv_Rdy;  
+		uint32_t  rcv_Rdy;
 			char  rcv_copy[64];
 		    char  rcv_buf[64];
 		 int32_t rx_buf_copy;
-		 int32_t rcv_byt_copy;       
+		 int32_t rcv_byt_copy;
   	  }RECIEVER;
 
 struct {
@@ -37,30 +37,30 @@
 		uint32_t trm_ena;
 	   }TRANSMITTER;
 */
-	    uint32_t  rcv_num_byt; 
-		uint32_t rcv_num_byt_old;
-		uint32_t  rcv_Rdy;  
-			char  rcv_copy[64];
-		    char  rcv_buf[64];
-		 int32_t rx_buf_copy;
-		 int32_t rcv_byt_copy;  
-		
-		uint32_t trm_num_byt;
-		uint32_t trm_rate;    	
-		uint32_t num_of_par;
-			char trm_buf[64];
-		   void* addr_param[16];
-		uint32_t size_param[16];
-		uint32_t trm_ena;
+uint32_t  rcv_num_byt;
+uint32_t rcv_num_byt_old;
+uint32_t  rcv_Rdy;
+char  rcv_copy[64];
+char  rcv_buf[64];
+int32_t rx_buf_copy;
+int32_t rcv_byt_copy;
 
-		uint32_t line_err;
-		uint32_t line_sts;
-		
- uint32_t EnablLength = 12;
- uint32_t LLI0_TypeDef[4];
- uint32_t LLI1_TypeDef[4];
- uint32_t EnablTx = 0x80;
- uint32_t EnablDMA = 0;
+uint32_t trm_num_byt;
+uint32_t trm_rate;
+uint32_t num_of_par;
+char trm_buf[64];
+void* addr_param[16];
+uint32_t size_param[16];
+uint32_t trm_ena;
+
+uint32_t line_err;
+uint32_t line_sts;
+
+uint32_t EnablLength = 12;
+uint32_t LLI0_TypeDef[4];
+uint32_t LLI1_TypeDef[4];
+uint32_t EnablTx = 0x80;
+uint32_t EnablDMA = 0;
 /******************************************************************************
 ** Function name:		DMA_IRQHandler
 **
@@ -68,29 +68,29 @@
 **
 ** parameters:			None
 ** Returned value:		None
-** 
+**
 ******************************************************************************/
-int check_lcc(void)           //e. CRC checking  //r.�������� ����������� �����
+int check_lcc(void)           //e. CRC checking  //r.проверка контрольной суммы
 {
-   int iCRC_calc, CRC_calc = 0, CRC_real;
- 
-  for (iCRC_calc = 1; iCRC_calc < (rcv_num_byt-2); iCRC_calc++)
-    CRC_calc += rcv_buf[iCRC_calc];  
-    
-  CRC_real = (rcv_buf[rcv_num_byt-2] << 8) | rcv_buf[rcv_num_byt-1];
-    
-	return (CRC_real - CRC_calc);
+    int iCRC_calc, CRC_calc = 0, CRC_real;
+
+    for (iCRC_calc = 1; iCRC_calc < (rcv_num_byt-2); iCRC_calc++)
+        CRC_calc += rcv_buf[iCRC_calc];
+
+    CRC_real = (rcv_buf[rcv_num_byt-2] << 8) | rcv_buf[rcv_num_byt-1];
+
+    return (CRC_real - CRC_calc);
 }
- void  PacketSafing(void)
-   {
-  /* int j; static char rcv_buf_copy[16];
-   	  for (j=2; j<rcv_num_byt; j++)
-	  {
-	  	if (rcv_buf[j] == 0xCC);		  
-		  	rcv_buf_copy[0] = 0xCC;
-	//	if ((rcv_buf[j] < 3) || (rcv_buf[j] == 0x1F))
-	  }	 */
-   }
+void  PacketSafing(void)
+{
+    /* int j; static char rcv_buf_copy[16];
+     	  for (j=2; j<rcv_num_byt; j++)
+      {
+      	if (rcv_buf[j] == 0xCC);
+    	  	rcv_buf_copy[0] = 0xCC;
+    //	if ((rcv_buf[j] < 3) || (rcv_buf[j] == 0x1F))
+      }	 */
+}
 
 /******************************************************************************
 ** Function name:		Line_1_Rcv
@@ -99,94 +99,83 @@
 **
 ** parameters:			None
 ** Returned value:		None
-** 
+**
 ******************************************************************************/
-void Line_1_Rcv(void)                  
-{  
-  static int ToWaitEnd, ErrReg ;
+void Line_1_Rcv(void)
+{
+    static int ToWaitEnd, ErrReg ;
+
 
-	
-	
-	
-	 while ((LPC_UART1->LSR & RecievBufEmpty) != 0)       //e. reciever contain some information                              
-	 rcv_buf[rcv_num_byt++] = LPC_UART1->RBR;//������ ���������� �� ������.
-  
-	 
-	 
-	 
-	if (( ToWaitEnd > 25000))	//e. end part of packet is absent //r. �� ��������� ����� ������
-   		 {
-		  do
-		 	 rcv_buf[--rcv_num_byt] = 0;
-		  while(rcv_num_byt);
-		  rcv_num_byt_old = rcv_num_byt;
-#if defined UART1REC
-			 LPC_UART1->FCR |= RX_FIFO_Reset; 
-#else
-  		 LPC_UART0->FCR |= RX_FIFO_Reset; 
-#endif
-	  //	L1_Rc_err (TIMEOUT_ERR);
-	    	 ToWaitEnd = 0;
-	 		 return;
-		 }	
-	  if (rcv_num_byt_old == rcv_num_byt)				  //e. we have not received any new bytes
- 		 { 
-		  if (ToWaitEnd) ToWaitEnd++;
-		   return;
-		 }
-	  	rcv_num_byt_old = rcv_num_byt;
+
 
-   if ((rcv_num_byt < 6) || ((rcv_num_byt & 0x0001) == 1))
-    {
-    ToWaitEnd++;
-	 return;
-    }		  										
+    while ((LPC_UART1->LSR & RecievBufEmpty) != 0)       //e. reciever contain some information
+        rcv_buf[rcv_num_byt++] = LPC_UART1->RBR;//чтение информации из буфера.
 
-  if ((!ToWaitEnd) && (rcv_num_byt > 1)) 					//e. the header of packet has not recieved //r. ������� ������ ������				 			
-  if ((rcv_buf[0] != 0xCC) || (( rcv_buf[1] > 2) && ( rcv_buf[1] != 0x1F)))  
-   {   
-  	 //	L1_Rc_err (HEADER_ERR);
-		ErrReg |= 5;
-		ToWaitEnd++;
-		return;
-   }
- //  if (ErrReg != 0)	//e. trying of recovering of packet //r. �������� ���������� ������
-   //	  PacketSafing();
+
 
 
-  if (rcv_num_byt == 6)
-          {	 
-		   if ((rcv_buf[2] == 0x0A) || (rcv_buf[2] == 0xE0) || (rcv_buf[2] == 0xE4) || (rcv_buf[2] == 0xE6) || (rcv_buf[2] == 0xE8))
-			 {                      //e. packet length is not valid, so we have the error //r. ������ ������� ������
-        	   ToWaitEnd++;   	
-			   return;
-			 }
+    if (( ToWaitEnd > 25000)) {	//e. end part of packet is absent //r. не дождались конца пакета
+        do
+            rcv_buf[--rcv_num_byt] = 0;
+        while(rcv_num_byt);
+        rcv_num_byt_old = rcv_num_byt;
+#if defined UART1REC
+        LPC_UART1->FCR |= RX_FIFO_Reset;
+#else
+        LPC_UART0->FCR |= RX_FIFO_Reset;
+#endif
+        //	L1_Rc_err (TIMEOUT_ERR);
+        ToWaitEnd = 0;
+        return;
+    }
+    if (rcv_num_byt_old == rcv_num_byt) {			  //e. we have not received any new bytes
+        if (ToWaitEnd) ToWaitEnd++;
+        return;
+    }
+    rcv_num_byt_old = rcv_num_byt;
+
+    if ((rcv_num_byt < 6) || ((rcv_num_byt & 0x0001) == 1)) {
+        ToWaitEnd++;
+        return;
+    }
 
-           }
-  else  if (rcv_num_byt == 8)
-  		  {
-		   if ((rcv_buf[2] == 0xE0) || (rcv_buf[2] == 0xE4))
-		    {
-		     ToWaitEnd++;   	
-			 return;
-		    }
-	      }
- if (check_lcc() != 0)  								//e. checksum is bad //r.����������� ����� �� �����
-        {
-		  
-	       return;
+    if ((!ToWaitEnd) && (rcv_num_byt > 1)) 					//e. the header of packet has not recieved //r. ожидаем начало пакета
+        if ((rcv_buf[0] != 0xCC) || (( rcv_buf[1] > 2) && ( rcv_buf[1] != 0x1F))) {
+            //	L1_Rc_err (HEADER_ERR);
+            ErrReg |= 5;
+            ToWaitEnd++;
+            return;
+        }
+//  if (ErrReg != 0)	//e. trying of recovering of packet //r. спасение следующего пакета
+    //	  PacketSafing();
+
+
+    if (rcv_num_byt == 6) {
+        if ((rcv_buf[2] == 0x0A) || (rcv_buf[2] == 0xE0) || (rcv_buf[2] == 0xE4) || (rcv_buf[2] == 0xE6) || (rcv_buf[2] == 0xE8)) {
+            //e. packet length is not valid, so we have the error //r. ошибка размера пакета
+            ToWaitEnd++;
+            return;
         }
-        else 												//e. cheksum is not bad //r.����������� ����� �����
-        {
-		  rcv_Rdy = 1;	  	
+
+    } else  if (rcv_num_byt == 8) {
+        if ((rcv_buf[2] == 0xE0) || (rcv_buf[2] == 0xE4)) {
+            ToWaitEnd++;
+            return;
         }
-	  ToWaitEnd = 0;
+    }
+    if (check_lcc() != 0) {								//e. checksum is bad //r.контрольные суммы не равны
 
-	  return;	
-  
-} 
+        return;
+    } else {											//e. cheksum is not bad //r.контрольные суммы равны
+        rcv_Rdy = 1;
+    }
+    ToWaitEnd = 0;
+
+    return;
+
+}
 /*
-void L1_Rc_err (int Error)   //e. error fixing and reciever restart //r. ������ �������� ������ � ����������� ���������
+void L1_Rc_err (int Error)   //e. error fixing and reciever restart //r. модуль фиксации ошибки и перезапуска приемника
 {
 	int temp;
   line_sts |= Error;
@@ -195,10 +184,10 @@
    	  temp |= Rcv_Rdy;
    	  asm("nop;");
    	   io_space_write(Sys_RgR, temp);
-  return;	   
+  return;
 }
 */
-	  
+
 /******************************************************************************
 ** Function name:		transm_DAT
 **
@@ -206,125 +195,118 @@
 **
 ** parameters:			None
 ** Returned value:		None
-** 
+**
 ******************************************************************************/
 
 
 void transm_DAT(void)
 {
-	uint32_t param, param_byte, CRC; 
-     int32_t *trans_param;		
-	 		 
-	if ((LPC_UART1->LSR & TRANS_SHIFT_BUF_EMPTY))      //r. ���������� ����� ����
-	   	if (!( LPC_GPDMACH1->CConfig & (1<<17)))
-	  		LPC_GPIO2->FIOCLR |= 8;				//switch off UART1 driver
+    uint32_t param, param_byte, CRC;
+    int32_t *trans_param;
+
+    if ((LPC_UART1->LSR & TRANS_SHIFT_BUF_EMPTY))      //r. передающий буфер пуст
+        if (!( LPC_GPDMACH1->CConfig & (1<<17)))
+            LPC_GPIO2->FIOCLR |= 8;				//switch off UART1 driver
 
-	if (trm_ena == 0)	
-	{		
-//	LPC_GPIO1->FIOCLR = (0x01<<30);							//r.�������� ���������?
-	 return;                                    //r. ���� ���, �������				
-	}									
+    if (trm_ena == 0) {
+//	LPC_GPIO1->FIOCLR = (0x01<<30);							//r.передача требуется?
+        return;                                    //r. если нет, возврат
+    }
 
-	if (!(LPC_UART1->LSR & TRANS_SHIFT_BUF_EMPTY))     //r. ���������� ����� ����
-  return;
+    if (!(LPC_UART1->LSR & TRANS_SHIFT_BUF_EMPTY))     //r. передающий буфер пуст
+        return;
 
-	if ( LPC_GPDMACH1->CConfig & (1<<17))				//r. ���� ����� �������� �����, �����
-	  return;
+    if ( LPC_GPDMACH1->CConfig & (1<<17))				//r. если канал передачи занят, ждать
+        return;
 
 //#if defined	UART1TEST
 //	if (LPC_SC->DMAREQSEL == 0x8)							//e. DMA request from UART
 //		LPC_GPIO2->FIOSET |= (1<<3);					//e. set enable UART bit
 //#endif
 
-	 trm_ena = 0; 									     //r. �������� ���� ���������� ��������	 
-	 
-	 trm_num_byt = 2;
-	 
-	 trm_buf[0] = 0x00dd;								//r. ��������� ������
-      trm_buf[1] = Device_blk.Str.My_Addres;     	//r. ����� �������
-       
-	  CRC = trm_buf[1];          					   //r.������������� �������� ����������� ����� 
-	  for ( param = 0; param < num_of_par; param++)		 //r.���� ������������ ����� ������ ������  
-	  {		  		  	
-	     trans_param = (int32_t *)addr_param[param];    //r. ������ ������ ������ �� ���������� � ������ ����������	    
-	    
-	     for (param_byte = 0; param_byte < size_param[param]; param_byte++) 
-	     {   
-	    	if ( (param_byte & 0x0001) == 0 )			//r. ��������� ������� ���� 
-	    	  trm_buf[trm_num_byt] = (*trans_param >> (8/**(size_param[param]-param_byte-1)*/)) & 0x00ff;	    	 //r.���������� ������������� ��������� � ������  
-	        else
-	         {
-	          trm_buf[trm_num_byt] = *trans_param & 0x00ff;
-	           trans_param ++;								//r.��������� � ��������� ������ ������
-	         }
-             CRC += trm_buf[trm_num_byt];					 //r. ���������� ������� ����������� �����
-               trm_num_byt++;								 //r. ���������� ���, ������������ � �����      
-        } 
-      }
-	   trm_buf[trm_num_byt] = CRC >> 8;						 //r. ������ ����������� ����� �  �����
-	    trm_buf[trm_num_byt+1] = CRC & 0x00ff;
+    trm_ena = 0; 									     //r. сбросить флаг разрешения передачи
+
+    trm_num_byt = 2;
+
+    trm_buf[0] = 0x00dd;								//r. заголовок пакета
+    trm_buf[1] = Device_blk.Str.My_Addres;     	//r. адрес прибора
+
+    CRC = trm_buf[1];          					   //r.инициализация счетчика контрольной суммы
+    for ( param = 0; param < num_of_par; param++) {	 //r.цикл формирования блока данных пакета
+        trans_param = (int32_t *)addr_param[param];    //r. чтение адреса одного из выдаваемых в пакете параметров
 
-             trm_num_byt += 2;
+        for (param_byte = 0; param_byte < size_param[param]; param_byte++) {
+            if ( (param_byte & 0x0001) == 0 )			//r. считываем старший байт
+                trm_buf[trm_num_byt] = (*trans_param >> (8/**(size_param[param]-param_byte-1)*/)) & 0x00ff;	    	 //r.размещение передаваемого параметра в пакете
+            else {
+                trm_buf[trm_num_byt] = *trans_param & 0x00ff;
+                trans_param ++;								//r.переходим к следующей ячейке памяти
+            }
+            CRC += trm_buf[trm_num_byt];					 //r. вычисление текущей контрольной суммы
+            trm_num_byt++;								 //r. количество бит, отправленных в пакет
+        }
+    }
+    trm_buf[trm_num_byt] = CRC >> 8;						 //r. запись контрольной суммы в  пакет
+    trm_buf[trm_num_byt+1] = CRC & 0x00ff;
+
+    trm_num_byt += 2;
+
+    LPC_GPDMACH1->CSrcAddr = (uint32_t)&trm_buf;
 
-	LPC_GPDMACH1->CSrcAddr = (uint32_t)&trm_buf;
-	
-	LPC_GPDMACH1->CControl &= ~0xFFF;				//e. reset of numer bytes for transmitting
-	LPC_GPDMACH2->CControl &= ~0xFFF;				//e. reset of numer bytes for transmitting
-	
-	LPC_GPDMACH1->CLLI = 0;							//e. linked list is empty
-  
-	if (trm_num_byt > 16)					   			//e. a packet is too long for FIFO 
-	 {		
-		LPC_GPDMACH1->CControl |= 16; 		   			//e. set length of first packet part
-		LPC_GPDMACH1->CLLI = (uint32_t)&LLI0_TypeDef;	//e. initialize chain for other parts transmitting
-	 }
-	else	 
-	   LPC_GPDMACH1->CControl |= trm_num_byt; 
+    LPC_GPDMACH1->CControl &= ~0xFFF;				//e. reset of numer bytes for transmitting
+    LPC_GPDMACH2->CControl &= ~0xFFF;				//e. reset of numer bytes for transmitting
+
+    LPC_GPDMACH1->CLLI = 0;							//e. linked list is empty
 
-	LPC_GPDMACH2->CControl |= 1;   							//e. set 1 transfert for enable signal   
+    if (trm_num_byt > 16) {				   			//e. a packet is too long for FIFO
+        LPC_GPDMACH1->CControl |= 16; 		   			//e. set length of first packet part
+        LPC_GPDMACH1->CLLI = (uint32_t)&LLI0_TypeDef;	//e. initialize chain for other parts transmitting
+    } else
+        LPC_GPDMACH1->CControl |= trm_num_byt;
+
+    LPC_GPDMACH2->CControl |= 1;   							//e. set 1 transfert for enable signal
 #if defined UART1TEST
-	LPC_UART1->TER = 0;  						//e. disable data output to UART1
+    LPC_UART1->TER = 0;  						//e. disable data output to UART1
 #endif
-   if (Device_Mode < 4)								 //e. work with internal latch
-   {						 	
-		LPC_TIM0->TCR = 1;							//e. start timer		
+    if (Device_Mode < 4) {							 //e. work with internal latch
+        LPC_TIM0->TCR = 1;							//e. start timer
 //-------------------debug-----------------------------------------
-		LPC_GPIO2->FIOSET |= 8;				//turn on RS-422 driver 
+        LPC_GPIO2->FIOSET |= 8;				//turn on RS-422 driver
 //-------------------debug-----------------------------------------
- 
-  	LPC_GPDMACH1->CConfig |=  DMAChannelEn;				    //e. DMA for UART transmition
-		//LPC_GPIO1->FIOSET = (0x1<<30);
-		 
-   }
+
+        LPC_GPDMACH1->CConfig |=  DMAChannelEn;				    //e. DMA for UART transmition
+        //LPC_GPIO1->FIOSET = (0x1<<30);
 
-   LPC_GPDMACH2->CConfig |=  DMAChannelEn;                   //e. DMA for enable signal 	  	                          	   
-	return;	
-}	  
+    }
+
+    LPC_GPDMACH2->CConfig |=  DMAChannelEn;                   //e. DMA for enable signal
+    return;
+}
 /******************************************************************************
 ** Function name:		DMA_Init
 **
-** Descriptions:		
+** Descriptions:
 **
-** parameters:			
-** Returned value:		
-** 
+** parameters:
+** Returned value:
+**
 ******************************************************************************/
 void DMA_Init( void )
 {
-  /* Enable CLOCK into GPDMA controller */
-  LPC_SC->PCONP |= GPDMA_POWER_ON;
+    /* Enable CLOCK into GPDMA controller */
+    LPC_SC->PCONP |= GPDMA_POWER_ON;
 
-  /* Select primary function(UART0/1/2/3) in DMA channels,
-  secondary is timer 0/1/2/3. */
+    /* Select primary function(UART0/1/2/3) in DMA channels,
+    secondary is timer 0/1/2/3. */
 #if defined UART1TEST
-  LPC_SC->DMAREQSEL = 3;
+    LPC_SC->DMAREQSEL = 3;
 #endif
-  //LPC_GPDMA->Sync = (0x1<<DMA_UART0_RX)|(0x1<<DMA_UART1_TX);														//synchronization logic is enabled by default
-  LPC_GPDMA->Config = DMA_ControllerEn | DMA_AHB_Little;
-  while ( !(LPC_GPDMA->Config & DMA_ControllerEn) ); //wait until DMA_Controller  switched on
-  
-  NVIC_DisableIRQ(DMA_IRQn);
-  return;
+    //LPC_GPDMA->Sync = (0x1<<DMA_UART0_RX)|(0x1<<DMA_UART1_TX);														//synchronization logic is enabled by default
+    LPC_GPDMA->Config = DMA_ControllerEn | DMA_AHB_Little;
+    while ( !(LPC_GPDMA->Config & DMA_ControllerEn) ); //wait until DMA_Controller  switched on
+
+    NVIC_DisableIRQ(DMA_IRQn);
+    return;
 }
 
 /******************************************************************************
@@ -334,69 +316,69 @@
 **
 ** parameters:			None
 ** Returned value:		None
-** 
+**
 ******************************************************************************/
 void UARTInit(void)
 {
-  uint32_t Fdiv;
-  uint32_t pclk;
+    uint32_t Fdiv;
+    uint32_t pclk;
 #if !defined UART1TEST
-  uint32_t baudrate = 38400;
+    uint32_t baudrate = 38400;
 #else
-  uint32_t baudrate = 38400;
+    uint32_t baudrate = 38400;
 #endif
-    LPC_SC->PCONP |= (1<<3);	
-   
-    LPC_PINCON->PINSEL0 |=  0x00000050;            
-            
-		pclk = SystemCoreClock/4;
+    LPC_SC->PCONP |= (1<<3);
+
+    LPC_PINCON->PINSEL0 |=  0x00000050;
+
+    pclk = SystemCoreClock/4;
 
-    LPC_UART0->LCR  = word_length_8 |one_stop_bit |no_parity |back_trans_dis |DLAB_access;                     
-    Fdiv = (pclk / 16) / baudrate;           
+    LPC_UART0->LCR  = word_length_8 |one_stop_bit |no_parity |back_trans_dis |DLAB_access;
+    Fdiv = (pclk / 16) / baudrate;
     LPC_UART0->DLM  = Fdiv / 256;
-    LPC_UART0->DLL  = Fdiv % 256; 
-    LPC_UART0->LCR  &= ~DLAB_access;	                      
+    LPC_UART0->DLL  = Fdiv % 256;
+    LPC_UART0->LCR  &= ~DLAB_access;
     LPC_UART0->FCR  = TX_FIFO_Reset |RX_FIFO_Reset |FIFOs_En |RX_TrigLvl_14;	//0x06;
-	LPC_UART0->IER = 0;//RBR_IntEnabl;
+    LPC_UART0->IER = 0;//RBR_IntEnabl;
 
-	LPC_UART0->FCR |= 0x08;  				//e. DMA mode select 
-	//+++++++++++++++++++++++enable signal initialization++++++++++++++++++++++++++
+    LPC_UART0->FCR |= 0x08;  				//e. DMA mode select
+    //+++++++++++++++++++++++enable signal initialization++++++++++++++++++++++++++
     LPC_PINCON->PINSEL1 &= ~0x0000C000;	//e. select P0.23 as general purpose
-	LPC_GPIO0->FIODIR |= 0x00800000;	//e. P0.23 is output 
-//	LPC_GPIO0->FIOMASK |= 0x007F0000;	//e. P0.16..P0.22 is not changed by FIOSET writing 
-	LPC_GPIO0->FIOCLR |= 0x00800000;	// e. clear P0.23
+    LPC_GPIO0->FIODIR |= 0x00800000;	//e. P0.23 is output
+//	LPC_GPIO0->FIOMASK |= 0x007F0000;	//e. P0.16..P0.22 is not changed by FIOSET writing
+    LPC_GPIO0->FIOCLR |= 0x00800000;	// e. clear P0.23
 
-  return; 
+    return;
 }
 
 void UART1_Init(void)
 {
-  uint32_t Fdiv;
-  uint32_t pclk;
+    uint32_t Fdiv;
+    uint32_t pclk;
 #if !defined UART1TEST
-  uint32_t baudrate = 256000;
-  #else
-  uint32_t baudrate = 38400;
+    uint32_t baudrate = 256000;
+#else
+    uint32_t baudrate = 38400;
 #endif
     LPC_SC->PCONP |= (1<<4);	 //switch on UART1
-   
-    LPC_PINCON->PINSEL4 |=  (2<<0)|(2<<2)|(2<<10)|(2<<14); //P2.0, P2.1, P2.5, P2.7          
-            
-		pclk = SystemCoreClock/4;
+
+    LPC_PINCON->PINSEL4 |=  (2<<0)|(2<<2)|(2<<10)|(2<<14); //P2.0, P2.1, P2.5, P2.7
+
+    pclk = SystemCoreClock/4;
 
-    LPC_UART1->LCR  = word_length_8 |one_stop_bit |no_parity |back_trans_dis |DLAB_access;                     
-    Fdiv = (pclk / 16) / baudrate;           
+    LPC_UART1->LCR  = word_length_8 |one_stop_bit |no_parity |back_trans_dis |DLAB_access;
+    Fdiv = (pclk / 16) / baudrate;
     LPC_UART1->DLM  = Fdiv / 256;
-    LPC_UART1->DLL  = Fdiv % 256; 
-    LPC_UART1->LCR  &= ~DLAB_access;	                      
+    LPC_UART1->DLL  = Fdiv % 256;
+    LPC_UART1->LCR  &= ~DLAB_access;
     LPC_UART1->FCR  = TX_FIFO_Reset |RX_FIFO_Reset |FIFOs_En |RX_TrigLvl_14;	//0x06;
 
-	LPC_UART1->RS485CTRL = (1<<5); //(1<<4);
+    LPC_UART1->RS485CTRL = (1<<5); //(1<<4);
 
-	LPC_UART1->IER = 0;//RBR_IntEnabl;
+    LPC_UART1->IER = 0;//RBR_IntEnabl;
 
-	LPC_UART1->FCR |= 0x08;  				//e. DMA mode select 
-  return; 
+    LPC_UART1->FCR |= 0x08;  				//e. DMA mode select
+    return;
 }
 //----------------------temp----------------------------
 /*int UART0_SendByte (int ucData)
@@ -413,52 +395,51 @@
 /******************************************************************************
 ** Function name:		UART_SwitchSpeed
 **
-** Descriptions:		Change UART speed 
+** Descriptions:		Change UART speed
 **
 ** parameters:			Demanded speed
 ** Returned value:		None
-** 
+**
 ******************************************************************************/
 void UART_SwitchSpeed(unsigned Speed)
 {
-  uint32_t Fdiv;
-  uint32_t pclk;
+    uint32_t Fdiv;
+    uint32_t pclk;
 
-  pclk = SystemCoreClock/4;
+    pclk = SystemCoreClock/4;
 #if defined  UART1REC
-	LPC_UART1->LCR |= DLAB_access;
+    LPC_UART1->LCR |= DLAB_access;
 #else
-	LPC_UART0->LCR |= DLAB_access;
+    LPC_UART0->LCR |= DLAB_access;
 #endif
-	switch (Speed)
-	{
-		case Sp38400:
-		 Fdiv = (pclk / 16) / 38400; 
-		 EnablLength = 3240;
-		break;
+    switch (Speed) {
+        case Sp38400:
+            Fdiv = (pclk / 16) / 38400;
+            EnablLength = 3240;
+            break;
 
-		case Sp115200:
-		 Fdiv = (pclk / 16) /115200; 
-		 EnablLength = 1090;
-		break;
+        case Sp115200:
+            Fdiv = (pclk / 16) /115200;
+            EnablLength = 1090;
+            break;
 
-		case Sp460800:
-		 Fdiv = (pclk / 16) / 460800; 		 
-		break;
+        case Sp460800:
+            Fdiv = (pclk / 16) / 460800;
+            break;
 
-		case Sp921600:
-		 Fdiv = (pclk / 16) / 921600; 
-		 EnablLength = 140;
-		break;
+        case Sp921600:
+            Fdiv = (pclk / 16) / 921600;
+            EnablLength = 140;
+            break;
 
-	}
-#if defined UART1REC	           
+    }
+#if defined UART1REC
     LPC_UART1->DLM  = Fdiv / 256;
-    LPC_UART1->DLL  = Fdiv % 256; 
+    LPC_UART1->DLL  = Fdiv % 256;
     LPC_UART1->LCR  &= ~DLAB_access;
 #else
-	LPC_UART0->DLM  = Fdiv / 256;
-    LPC_UART0->DLL  = Fdiv % 256; 
+    LPC_UART0->DLM  = Fdiv / 256;
+    LPC_UART0->DLL  = Fdiv % 256;
     LPC_UART0->LCR  &= ~DLAB_access;
 #endif
 }
@@ -469,84 +450,85 @@
 **
 ** parameters:			None
 ** Returned value:		None
-** 
+**
 ******************************************************************************/
 void UART_DMA_Init()
 {
 //+++++++++++++++++config channel for UART0+++++++++++++++++++++++++++++++++++++++++++++++
-	LPC_GPDMACH1->CConfig &=  ~DMAChannelEn;  
+    LPC_GPDMACH1->CConfig &=  ~DMAChannelEn;
+
+    LPC_GPDMA->IntTCClear = DMA1_IntTCClear;
+    LPC_GPDMA->IntErrClr = DMA1_IntErrClear;
 
-	LPC_GPDMA->IntTCClear = DMA1_IntTCClear;
-	LPC_GPDMA->IntErrClr = DMA1_IntErrClear; 
-	  
-	 LPC_GPDMACH1->CSrcAddr = (uint32_t)&trm_buf;
- 	 LPC_GPDMACH1->CDestAddr = UART1_DMA_TX_DST;
-   LPC_GPDMACH1->CControl = SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
+    LPC_GPDMACH1->CSrcAddr = (uint32_t)&trm_buf;
+    LPC_GPDMACH1->CDestAddr = UART1_DMA_TX_DST;
+    LPC_GPDMACH1->CControl = SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
 #if defined UART1TEST
-	 LPC_GPDMACH1->CConfig |= MaskTCInt | MaskErrInt | DMA_MEMORY | DstDMA_UART1_TX |(M2P << 11);
+    LPC_GPDMACH1->CConfig |= MaskTCInt | MaskErrInt | DMA_MEMORY | DstDMA_UART1_TX |(M2P << 11);
 #else
-	g LPC_GPDMACH1->CConfig |= MaskTCInt | MaskErrInt | DMA_MEMORY | DstDMA_UART0_TX |(M2P << 11);
+    g LPC_GPDMACH1->CConfig |= MaskTCInt | MaskErrInt | DMA_MEMORY | DstDMA_UART0_TX |(M2P << 11);
 #endif
 
-	EnablDMA = (LPC_GPDMACH1->CConfig)|DMAChannelEn; //save register content for DMA starting in multidrop mode
-//**********for Rate mode output*****************************	
- #if defined UART1TEST 											
-	  LLI1_TypeDef[0] = (uint32_t)&trm_buf[32];
-		LLI1_TypeDef[1] = UART1_DMA_TX_DST;
-		LLI1_TypeDef[2] = 0;
-		LLI1_TypeDef[3] = (12 & 0x0FFF) | SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
+    EnablDMA = (LPC_GPDMACH1->CConfig)|DMAChannelEn; //save register content for DMA starting in multidrop mode
+//**********for Rate mode output*****************************
+#if defined UART1TEST
+    LLI1_TypeDef[0] = (uint32_t)&trm_buf[32];
+    LLI1_TypeDef[1] = UART1_DMA_TX_DST;
+    LLI1_TypeDef[2] = 0;
+    LLI1_TypeDef[3] = (12 & 0x0FFF) | SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
 
-	  LLI0_TypeDef[0] = (uint32_t)&trm_buf[16];
-		LLI0_TypeDef[1] = UART1_DMA_TX_DST;
-		LLI0_TypeDef[2] = (uint32_t)&LLI1_TypeDef;
-		LLI0_TypeDef[3] = (16 & 0x0FFF) | SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
+    LLI0_TypeDef[0] = (uint32_t)&trm_buf[16];
+    LLI0_TypeDef[1] = UART1_DMA_TX_DST;
+    LLI0_TypeDef[2] = (uint32_t)&LLI1_TypeDef;
+    LLI0_TypeDef[3] = (16 & 0x0FFF) | SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
 #else
-	 	LLI1_TypeDef[0] = (uint32_t)&trm_buf[32];
-		LLI1_TypeDef[1] = UART0_DMA_TX_DST;
-		LLI1_TypeDef[2] = 0;
-		LLI1_TypeDef[3] = (12 & 0x0FFF) | SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
+    LLI1_TypeDef[0] = (uint32_t)&trm_buf[32];
+    LLI1_TypeDef[1] = UART0_DMA_TX_DST;
+    LLI1_TypeDef[2] = 0;
+    LLI1_TypeDef[3] = (12 & 0x0FFF) | SrcBSize_1 | DstBSize_1 | SrcWidth_8b | DstWidth_8b | SrcInc | DstFixed | TCIntDisabl;
 
-	  LLI0_TypeDef[0] = (uint32_t)&trm_buf[16];
-		LLI0_TypeDef[1] = UART0_DMA_TX_DST;
-		LLI0_TypeDef[2] = (uint32_t)&LLI1_TypeDef;
-		LLI0_TypeDef[3] = (16 & 0x0FFF)|SrcBSize_1 |DstBSize_1 |SrcWidth_8b 
-						|DstWidth_8b|SrcInc |DstFixed |TCIntDisabl;
+    LLI0_TypeDef[0] = (uint32_t)&trm_buf[16];
+    LLI0_TypeDef[1] = UART0_DMA_TX_DST;
+    LLI0_TypeDef[2] = (uint32_t)&LLI1_TypeDef;
+    LLI0_TypeDef[3] = (16 & 0x0FFF)|SrcBSize_1 |DstBSize_1 |SrcWidth_8b
+                      |DstWidth_8b|SrcInc |DstFixed |TCIntDisabl;
 #endif
 //++++++++++++++++++++++++++config channel for transmit enable signal+++++++++++++++++++
-  LPC_GPDMACH2->CConfig &= ~DMAChannelEn;  
+    LPC_GPDMACH2->CConfig &= ~DMAChannelEn;
 
- 	LPC_GPDMA->IntTCClear = DMA2_IntTCClear;
-	LPC_GPDMA->IntErrClr = DMA2_IntErrClear; 
+    LPC_GPDMA->IntTCClear = DMA2_IntTCClear;
+    LPC_GPDMA->IntErrClr = DMA2_IntErrClear;
 
-	LPC_GPDMACH2->CSrcAddr = (uint32_t)&EnablTx; //e.	content of TX UART1 enable register
-	LPC_GPDMACH2->CDestAddr = 0x40010030;	   //e.	address of TX UART1 enable register (U1TER)
-	  											
-	LPC_GPDMACH2->CControl = SrcBSize_4 |DstBSize_4   
-		                    |SrcWidth_8b |DstWidth_8b|SrcFixed |DstFixed |TCIntEnabl;
+    LPC_GPDMACH2->CSrcAddr = (uint32_t)&EnablTx; //e.	content of TX UART1 enable register
+    LPC_GPDMACH2->CDestAddr = 0x40010030;	   //e.	address of TX UART1 enable register (U1TER)
 
-	LPC_GPDMACH2->CConfig |= MaskTCInt |MaskErrInt 
-	    				  |SrcDMA_UART0_RX |DstDMA_UART0_RX|(M2P << 11);
-	LPC_GPDMACH2->CLLI = 0;								//e. linked list is empty	 
+    LPC_GPDMACH2->CControl = SrcBSize_4 |DstBSize_4
+                             |SrcWidth_8b |DstWidth_8b|SrcFixed |DstFixed |TCIntEnabl;
+
+    LPC_GPDMACH2->CConfig |= MaskTCInt |MaskErrInt
+                             |SrcDMA_UART0_RX |DstDMA_UART0_RX|(M2P << 11);
+    LPC_GPDMACH2->CLLI = 0;								//e. linked list is empty
 
 //++++++++++++++++++++++++++config channel for DMA1 enable signal+++++++++++++++++++
 #if defined UART1TEST
-    LPC_GPDMACH4->CConfig &= ~DMAChannelEn;  
+    LPC_GPDMACH4->CConfig &= ~DMAChannelEn;
+
+    LPC_GPDMA->IntTCClear = DMA4_IntTCClear;
+    LPC_GPDMA->IntErrClr = DMA4_IntErrClear;
+
+    LPC_GPDMACH4->CSrcAddr = (uint32_t)&EnablDMA; //e.	content of TX UART1 enable register
+    LPC_GPDMACH4->CDestAddr = 0x50004130;	   //e.	address of DMA1CConfig register
 
-  	LPC_GPDMA->IntTCClear = DMA4_IntTCClear;
-	LPC_GPDMA->IntErrClr = DMA4_IntErrClear; 
- 
-	LPC_GPDMACH4->CSrcAddr = (uint32_t)&EnablDMA; //e.	content of TX UART1 enable register
-	LPC_GPDMACH4->CDestAddr = 0x50004130;	   //e.	address of DMA1CConfig register
-	  											
-	LPC_GPDMACH4->CControl = SrcBSize_4 |DstBSize_4   
-		                    |SrcWidth_8b |DstWidth_8b|SrcFixed |DstFixed |TCIntEnabl;
+    LPC_GPDMACH4->CControl = SrcBSize_4 |DstBSize_4
+                             |SrcWidth_8b |DstWidth_8b|SrcFixed |DstFixed |TCIntEnabl;
 
-	LPC_GPDMACH4->CConfig |= MaskTCInt |MaskErrInt 
-	    				  |SrcDMA_UART0_TX |DstDMA_UART0_TX|(M2P << 11);
-	LPC_GPDMACH4->CLLI = 0;								//e. linked list is empty	
-#endif									
+    LPC_GPDMACH4->CConfig |= MaskTCInt |MaskErrInt
+                             |SrcDMA_UART0_TX |DstDMA_UART0_TX|(M2P << 11);
+    LPC_GPDMACH4->CLLI = 0;								//e. linked list is empty
+#endif
 }
 /******************************************************************************
 **                            End Of File
 ******************************************************************************/
 
+