LPC1768 + RS485

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
greenrat
Родился
Сообщения: 7
Зарегистрирован: Чт авг 09, 2012 10:08:14

Re: LPC1768 + RS485

Сообщение greenrat »

Прерывание

Код: Выделить всё

void UART0_IRQHandler (void) 
{
 uint8_t IIRValue, LSRValue;
  uint8_t Dummy = Dummy;
    
  IIRValue = LPC_UART0->IIR;
    
  IIRValue >>= 1;       
  IIRValue &= 0x07;     
       
  if ( IIRValue == IIR_RLS )  
  {
    LSRValue = LPC_UART0->LSR;
    if ( LSRValue & (LSR_OE|LSR_PE|LSR_FE|LSR_RXFE|LSR_BI) )
    {
      UART0_Status = LSRValue;
      Dummy = LPC_UART0->RBR;
      return;
    }
    if ( LSRValue & LSR_RDR )          
    {
		buff_PutChar(0,LPC_UART0->RBR);
    }
  }
  else if ( IIRValue == IIR_RDA )
  {
    	buff_PutChar(0,LPC_UART0->RBR);

  }
  else if ( IIRValue == IIR_CTI ) 
  {
    UART0_Status |= 0x100;       
  }
  else if ( IIRValue == IIR_THRE )
  {
      LSRValue = LPC_UART0->LSR;

   if (UART0_tx_rd_index<UART0_tx_counter) 
      LPC_UART0->THR = UART0_tx_Buffer[UART0_tx_rd_index++];//Передаем
    else 
	{
	 UART0_tx_rd_index=0;
	 UART0_tx_counter=0;
	 rs485C0_RX;
   //  LPC_UART0->IER = IER_THRE | IER_RLS | IER_RBR;	// Re-enable RBR 
	}

  }
}
Отсылка пакета

Здесь я запускаю процедуру отсылки - при каждом прерывании о том что байт отправлен - из прерывания отправляется следующий байт - и так до конца пакета

Код: Выделить всё

void RS485_StartTX(uint8_t PortNum)
{
 // LPC_UART0->IER = IER_THRE | IER_RLS;			//Disable RBR
  rs485C0_TX;
   UART0_tx_rd_index=0;    
   LPC_UART0->THR=UART0_tx_Buffer[UART0_tx_rd_index++];
}
Перекопал кучу сайтов на эту тему и даже на NXP был (надо кстати туда тоже этот вопрос написать) -
не только у меня подобная проблема - люди тоже бьются с этими Уартами аля RS485
но пока ничего существенного так и не нашли - есть конечно одна мысль - но надо ее проверить).
Реклама
Аватара пользователя
korsaj
Потрогал лапой паяльник
Сообщения: 330
Зарегистрирован: Чт июн 23, 2011 07:55:51

Re: LPC1768 + RS485

Сообщение korsaj »

Чё ето? rs485C0_RX/rs485C0_ТX? - переключение прием/передача..
Если да, оставте их включенными, приемник на прием, передатчик на передачу и помните что будете принимать эхосигнал.
Реклама
Ответить

Вернуться в «Периферия»