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

 
 
> функция не выходит из 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
Ответов
esaulenka
сообщение Nov 17 2015, 16:12
Сообщение #2


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



В примерах от ST HCI_Isr() засунут в SPI_IRQ_Handler(), который, в свою очередь, является дефайном для EXTIxxx_IrqHandler.

Вызывается, если BlueNRG дёргает ножкой "у меня есть данные, давай читай". Подробности не помню, но могу предположить, что пока данные не закончатся, ножку он не опустит.
Из чего можно сделать вывод, что выход по таймауту работает. Только пользы никакой не приносит - прерывание тут же вызывается снова.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Nov 17 2015, 16:21
Сообщение #3


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

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



Цитата(esaulenka @ Nov 17 2015, 22:12) *
В примерах от ST HCI_Isr() засунут в SPI_IRQ_Handler(), который, в свою очередь, является дефайном для EXTIxxx_IrqHandler.

Вызывается, если BlueNRG дёргает ножкой "у меня есть данные, давай читай". Подробности не помню, но могу предположить, что пока данные не закончатся, ножку он не опустит.
Из чего можно сделать вывод, что выход по таймауту работает. Только пользы никакой не приносит - прерывание тут же вызывается снова.

на скопе вижу высокий уровень на ноге - она не опускается. проблема в старом стаке - версия 6.3. в любом случае должен быть механизм выхода.
кстати опять завис - ставлю точку останова после while - я туда не попадаю.
Go to the top of the page
 
+Quote Post

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


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:47
Рейтинг@Mail.ru


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