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

 
 
> функция не выходит из while.
Jenya7
сообщение Nov 17 2015, 12:35
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть такая функция.

Код
void HCI_Isr(void)
{  
  isr_timeout = IRQ_TIMEOUT;

  while(BlueNRG_DataPresent())
  {
      if(!isr_timeout--)
      {
          break;
      }

         //some code

  }
}

BlueNRG_DataPresent() проверяет высокий сигнал на пине. Если модуль завис то while все время крутиться. но я сделал таймаут а из в while функция все равно не выходит.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Nov 17 2015, 15:03
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Вроде должно работать и так по идее. Там видимо в чем-то еще дело. Например он из прерывания выходит по таймауту вашему и тут-же в него(прерывание) снова заходит.

А вообще это жесть - так долго сидеть в прерывании и чего-то там ждать. Вся система колом встанет на время этого ожидания и либо все остальные прерывания, либо те что ниже приоритетом чем это(в зависимости от контроллера) не смогут обслуживаться.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 6th September 2025 - 12:25
Рейтинг@Mail.ru


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