RusikOk 1 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба как запретить отладчику перебрасывать меня в обработчик прерывания если оно произошло пока программа была на паузе? P.S. точки останова в прерывании нету Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
razrab83 21 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба я такого поведения не наблюдал. ps из сказанного вами я понимаю так: 1) запускаем программу в отладке 2) останавливаемся где-то в коде на брейке (программа находиться в паузе) 3) смотрим код, пъем кофе, ни чего не нажимаем, программа продолжает пребывать в паузе.... 4)пока пили кофе, и вдруг налетел ветер вас перекинуло в прерывание, т.е. IDE открыла файл с обработчиком прерывания и подсветило первую строку. файл, на котором был брейк и на котором стояли стал неактивным (или перекрылся обработчиком). вы ни чего не нажимали, ни чего не выполняли, находились в паузе - и вас перекинуло!? Вот именно такого поведения, о котором вы говорите, я ни когда не наблюдал. если же вас, находясь в паузе, ни куда не перекидывает, потом вы делаете шаг - и перекидывает в обработчик - так это не "перебрасывает в паузе", а "перебрасывает при пошаговой отладке". Это не пауза, а выполнение. Вы шагнули через функцию printf() без захода - там коду 100500 строк асма, конечно там может все что угодно случиться. Если в паузе у вас встал флаг прерывания, то после того, как допьете кофе и сделаете шаг (даже если шаг по asm("nop");) - вас перебросит. По мойму это нормальное поведение любой иде (в том числе и IAR). Чтоб этого не было, в паузе запретите прерывания (можно прямо в IDE руками нужный флаг снять, можно в коде до брейка запретить прерывания, после разрешить). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RusikOk 1 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 2 минуты назад, razrab83 сказал: потом вы делаете шаг - и перекидывает в обработчик именно так. я не правильно изложил свои мысли. в IAR такого точно нет. а тут уже за...............ло если честно 4 минуты назад, razrab83 сказал: можно в коде до брейка запретить прерывания, после разрешить а без костылей никак? может есть флажок в 100500 настройках этого го....на? PS прошу прощение за токсичность. но уже терпения нету Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 10 минут назад, RusikOk сказал: именно так. я не правильно изложил свои мысли. в IAR такого точно нет. а тут уже за...............ло если честно В IAR-е для этого есть соответствующий флажок запрета прерывания при пошаговой отладке. Если тут такого нет, то тогда только делать вручную запрет/разрешение прерываний, редактируя регистры PRIMASK/FAULTMASK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
razrab83 21 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 6 минут назад, RusikOk сказал: в IAR такого точно нет в иаре точно такое есть. если в паузе сработает таймер или вачдог, то при шаге - велкомТуОбработчик. НО, если у вас STM32, то посмотрите регистр DBG. В нем можно отключить прерывания в "паузе". Например если выставить флаг DBG_WWDG_STOP, то Window Watchdog Stopped when Core is halted 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 7 минут назад, razrab83 сказал: в иаре точно такое есть. если в паузе сработает таймер или вачдог, то при шаге - велкомТуОбработчик. Во-первых: в IAR-е это отключаемо посредством соответствующего чекбокса в настройках. На время шагов IAR ставит запрет прерывания. 7 минут назад, razrab83 сказал: НО, если у вас STM32, то посмотрите регистр DBG. В нем можно отключить прерывания в "паузе". Например если выставить флаг DBG_WWDG_STOP, то Window Watchdog Stopped when Core is halted Во-вторых этот регистр не имеет никакого отношения к запросам прерываний. Он замораживает тактирование самого соответствующего периферийного блока на время останова CPU. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
razrab83 21 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 3 минуты назад, jcxz сказал: Во-вторых этот регистр не имеет никакого отношения к запросам прерываний. Он замораживает тактирование самого соответствующего периферийного блока на время останова CPU. и? это имеет прямое отношение к запросом на прерывания: стоит вачдог - нет запросов на прерывание. У ТС может именно по WD идет прерывание. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RusikOk 1 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 3 минуты назад, razrab83 сказал: У ТС может именно по WD идет прерывание. по внешнему прерыванию. уже накостылял в коде HAL_NVIC_DisableIRQ(BUFF_AVAIL_EXTI_IRQn); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 28 минут назад, RusikOk сказал: по внешнему прерыванию. уже накостылял в коде HAL_NVIC_DisableIRQ(BUFF_AVAIL_EXTI_IRQn); А что - там нет аналога IAR-овского окна "Registers"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RusikOk 1 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 8 минут назад, jcxz сказал: А что - там нет аналога IAR-овского окна "Registers"? есть только все сбросится после перезапуска отладки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 26 января, 2023 Опубликовано 26 января, 2023 · Жалоба 37 минут назад, RusikOk сказал: есть только все сбросится после перезапуска отладки Зато можно оперативно запрещать/разрешать. Без необходимости перепрошивки. В любой момент и в любом месте программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 26 января, 2023 Опубликовано 26 января, 2023 (изменено) · Жалоба 4 часа назад, RusikOk сказал: как запретить отладчику перебрасывать меня в обработчик прерывания если оно произошло пока программа была на паузе Эту функцию отладчика ещё не изобрели, хотя проблеме более 20 лет. И не только в IAR, но и во всех остальных IDE. Есть костыльные попытки с запретом прерываний, когда это выполняет скрипт в реальном времени. Но стабильность результата ниже уровня плинтуса. Это даже не проблема свистка, и не ide как таковой - проблема в физической реализации алгоритма на кристалле чипа. Там всё застыло на 30 лет с момента принятия промышленного стандарта, и теперь всем страшно его трогать - потому что сломается вообще все и сразу. Изменено 26 января, 2023 пользователем makc Грубая лексика 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RusikOk 1 27 января, 2023 Опубликовано 27 января, 2023 · Жалоба а есть в кубе аналог такой очень полезной штуки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 января, 2023 Опубликовано 28 января, 2023 (изменено) · Жалоба 13 hours ago, RusikOk said: а есть в кубе аналог такой очень полезной штуки? Это? Изменено 28 января, 2023 пользователем tonyk_av 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 28 января, 2023 Опубликовано 28 января, 2023 · Жалоба Не знаю, как в кубе, а в эклипсе делаю так: 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться