ART_ME 0 6 октября, 2019 Опубликовано 6 октября, 2019 · Жалоба Здравствуйте. Вопрос от новичка. Отладчик зависает на этой строчке: /* Enable the Selected IRQ Channels --------------------------------------*/ NVIC->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] = (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F); Может зависнуть либо при первом, либо при втором, либо при третьем обращении. Системность не выяснена, утром зависал на третьем обращении, сейчас на первом. Обработчики вызовов прерываний в наличии. Вопрос: как в отладчике IAR узнать место зависания? К примеру, в EmBitz в окне отладчика есть "Стек вызовов", где показана функция, выполняемая в данный момент. А в IAR как? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 6 октября, 2019 Опубликовано 6 октября, 2019 · Жалоба А что у вас находится в поле NVIC_IRQChannel ? Какое прерывание вы включаете? Может быть оно срабатывает, а по вектору мусор? Вот и отладчик сходит с ума. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 6 октября, 2019 Опубликовано 6 октября, 2019 (изменено) · Жалоба Если я правильно понял Ваш вопрос, то, к примеру, на третьем проходе вызывается вот это прерывание: /******************************************************************************* * Function Name : TIM1_BRK_IRQHandler * Description : This function handles TIM1 Break interrupt request. * Input : None * Output : None * Return : None *******************************************************************************/ void TIM1_BRK_IRQHandler(void) { MCL_SetFault(OVER_CURRENT); TIM_ClearITPendingBit(TIM1, TIM_IT_Break); } Изменено 6 октября, 2019 пользователем ART_ME Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 6 октября, 2019 Опубликовано 6 октября, 2019 · Жалоба 1 час назад, ART_ME сказал: Если я правильно понял Ваш вопрос, то, к примеру, на третьем проходе вызывается вот это прерывание: Не правильно. Откройте для себя возможности окна дизассемблера. Зависать может по 1001 причине. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 6 октября, 2019 Опубликовано 6 октября, 2019 · Жалоба 7 минут назад, jcxz сказал: Не правильно. Откройте для себя возможности окна дизассемблера. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 6 октября, 2019 Опубликовано 6 октября, 2019 · Жалоба Я же писал: "Откройте возможности", а не тупо запостите скриншот (тем более левый). Смотреть надо - в какой адрес и что пишется. И сверять это с даташитом на МК. Также проверить таблицу прерываний что ваш обработчик вообще в ней присутствует. Ну и проверить что не пишете в таймер такое значение, что у вас прерывания начинают генериться с тактовой частотой ядра. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 6 октября, 2019 Опубликовано 6 октября, 2019 · Жалоба Я правильно Вас понял, что Вы считаете единственным решением указанной проблемы просмотр отладки в окне ассемблера? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба 5 hours ago, ART_ME said: Я правильно Неправильно Чтение документации, и осознание того, что вы делаете, тоже является решением проблемы. Приведите адреса и значения битов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 7 октября, 2019 Опубликовано 7 октября, 2019 (изменено) · Жалоба 2 часа назад, haker_fox сказал: Приведите адреса и значения битов. Так суть вопроса в том и состоит, что я не знаю, как в IAR посмотреть адреса и значения битов при зависании отладчика. Изменено 7 октября, 2019 пользователем ART_ME Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба 7 minutes ago, ART_ME said: Так суть вопроса в том и состоит, что я не знаю, как в IAR посмотреть адреса и значения битов при зависании отладчика. А зачем вам отладчик? Найдите заголовочные файлы и файлы программ, где эти значения инициализируются. CTRL-SHIFT+F - поиск по всем файлам. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 7 октября, 2019 Опубликовано 7 октября, 2019 (изменено) · Жалоба 11 минут назад, haker_fox сказал: А зачем вам отладчик? Найдите заголовочные файлы и файлы программ, где эти значения инициализируются. Ясно - пойди туда не знаю куда, принеси то не знаю что. Я же Вас не заставляю помогать мне, верно? Не хотите отвечать или не знаете ответа, промолчите. К чему изгаляться-то? Изменено 7 октября, 2019 пользователем ART_ME Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба 33 minutes ago, ART_ME said: К чему изгаляться-то? Простите за грубость, но вы дурак? Я вам дал нормальный и адекватный ответ. Если вы не в состоянии найти в тексте вашей программы нужную информацию, про которую вам подсказывают, то чем мы вам помочь можем? Вы не привели не полного текста программы, не выложили проект. Какую ещё-то помощь можно вам дать? 35 minutes ago, ART_ME said: Не хотите отвечать или не знаете ответа, промолчите. Успокойтесь, уважаемый. Обиды строить будете дома перед мамой или папой. 37 minutes ago, ART_ME said: Ясно - пойди туда не знаю куда, принеси то не знаю что. Т.е. вы в своей (своей ли???) программе не в зуб ногой, а я виноват? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба ART_ME, что-то вы фигнёй страдаете. В CMSIS есть готовые функции для работы с NVIC типа NVIC_EnableIRQ() - пользуйтесь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба 9 minutes ago, VladislavS said: ART_ME, что-то вы фигнёй страдаете. Нее, это похвально, что автор решил (как я подумал) разобраться с регистрами. Может быть он пишет свой драйвер управления прерываниями. Хотя сейчас я уже сомневаюсь в своих выводах. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба 2 минуты назад, VladislavS сказал: ART_ME, что-то вы фигнёй страдаете. В CMSIS есть готовые функции для работы с NVIC типа NVIC_EnableIRQ() Я не страдаю, я всего лишь пытаюсь освоить IAR. Точнее его отладчик, а в данном случае - узнать что делать в случае его зависания. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться