реклама на сайте
подробности

 
 
> LPC1768 NVIC, UART3 генерит постоянное прерывание
theBMV
сообщение Jul 6 2011, 11:49
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 14-10-08
Из: г. Королев
Пользователь №: 40 940



Среда: IAR ARM 5.4
Контроллер: LPC1768

Пишу инициализацию и обработчик прерываний для UART3
Код
void init_uart3(void)
{
  // Скорость
  /*
  F = Fp/(16*(DLM*256+DLL)*(1+DIV/MUL))
  F = 250 kBod
  Fp = 25 MHz
  DLM = 0
  DLL = 5
  DIV = 1
  MUL = 4
  */
  U3LCR_bit.DLAB = 1;
  U3DLL = 5;
  U3DLM = 0;
  U3LCR_bit.DLAB = 0;
  U3FDR_bit.DIVADDVAL = 1;
  U3FDR_bit.MULVAL = 4;
  
  // Формат
  U3FCR_bit.FCRFE = 1;                                                          // Включаем FIFO
  U3FCR_bit.RTLS = 2;                                                           // Порог срабатывания 8 символов
  U3LCR_bit.WLS = 3;                                                            // 8 бит данных
  U3LCR_bit.SBS = 1;                                                            // 2 стоп бита
  
  // Прерывания
  U3IER_bit.RDAIE = 1;                                                          // Прерывание по вх. данным
  U3IER_bit.RXLSIE = 1;                                                         // Прерывание по статусу линии
  SETENA0 = (1UL << 8);                                                           // Разрешаем NVIC UART3
}

...и тут оп! J-link переходит из пошагового в режим выполнения,
нажимаю Break, и вижу, что он уже в
Код
void UART3_IRQHandler(void)
{
  
  U3RBR;
  CLRPEND0 = 1UL << 8;                                                          // Сбрасываем флаг прерывания NVIC UART0
}

F11, F11 .. и опять из пошагового вылетает! Делаю Break,
он или там же, или тут
Код
while(1)
  {
    __disable_interrupt();
    WDFEED = 0xAA;                                                              // Кормим
    WDFEED = 0x55;                                                              // собаку
    __enable_interrupt();
    
    
  }

Причем, по UART3 в этот момент ничего не идет.
И что это вообще за ерунда с отладкой???

Сообщение отредактировал theBMV - Jul 6 2011, 11:50
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sysel
сообщение Jul 6 2011, 12:06
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



UM10360, стр. 303
Цитата
Given the status of UnIIR[3:0], an
interrupt handler routine can determine the cause of the interrupt and how to clear the
active interrupt. The UnIIR must be read in order to clear the interrupt prior to exiting the
Interrupt Service Routine.


Надо сбросить прерывание средствами самого уарта.

И ещё вопрос: в PCONP UART3 запитан?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 11:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016