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

 
 
> функция не выходит из 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, 20:16
Сообщение #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
Jenya7
сообщение Nov 18 2015, 07:18
Сообщение #3


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

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



Цитата(sigmaN @ Nov 18 2015, 02:16) *
Вот я тоже о том-же.

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


но как прерывание вызывается снова? у меня оно по rising edge а нога все время висит в logic high.
Go to the top of the page
 
+Quote Post

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


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

 


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


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