Obam 34 9 октября, 2019 Опубликовано 9 октября, 2019 (изменено) · Жалоба B . Молодцы, берите с полки пирожок, сдувайте пыль и кладите обратно ;-) Изменено 9 октября, 2019 пользователем Obam ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 1 minute ago, Obam said: Молодцы, берите с полки пирожок, сдувайте пыль и кладите обратно ;-) Лучше съем, я люблю покушать) Желатель на халяву! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 34 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба Если вы передаёте указатель на кусочек кода, то адрес этого кода следует увеличить на 1. Я просто посмотрю за собой, чтоб этот кусочек кода был в секции с атрибутом "CODE" и компилятор (ну или ассемблер) для CM сам выставит признак "Thumb". Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 7 minutes ago, Obam said: Я просто посмотрю за собой, чтоб этот кусочек кода был в секции с атрибутом "CODE" Я просто решил блеснуть знаниями. Вы задели меня за живое, когда сказали, что Quote А то чёто у кортекса M3 уже переходы к обработчику прерывания стали по команде "B" Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 1 час назад, haker_fox сказал: Теперь найдите в вашем коде содержимое функции TIM1_BRK_IRQHandler Если такой функции нет... Такая функция есть: /******************************************************************************* * 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); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 1 minute ago, ART_ME said: Такая функция есть: Отлично! Точку останова (F9) вы туда ставили? Код этот вызывается, т.е. прерывание срабатывает? Если да, и "виснет", то я бы удалил функцию MCL_SetFault(OVER_CURRENT); и посмотрел, что будет. Возможно, она делает что-то недопустимое, ну или это прерывание вызывается слишком часто. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 17 минут назад, haker_fox сказал: Отлично! Точку останова (F9) вы туда ставили? Код этот вызывается, т.е. прерывание срабатывает? Если да, и "виснет", то я бы удалил функцию MCL_SetFault(OVER_CURRENT); и посмотрел, что будет. Возможно, она делает что-то недопустимое, ну или это прерывание вызывается слишком часто. Поставил. Программа до этого брейкпоинта не доходит. Потому как виснет на первом же вызове NVIC_Init. Т.е. не на TIM1_BRK_IRQHandler, а на ADC1_2_IRQChannel Хотя с утра стабильно висла на третьем, т.е. на TIM1_BRK_IRQHandler Поставить брейкпоинт в ADC1_2_IRQChannel? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 15 minutes ago, ART_ME said: Поставить брейкпоинт в ADC1_2_IRQChannel? Сдается мне, это бесполезно. Похоже, адрес таблицы векторов для NVIC задан неправильно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба 4 minutes ago, aaarrr said: Похоже, адрес таблицы векторов для NVIC задан неправильно. Ну уже что-то. Если бы автор топика информацию выдавал как-то оперативнее, а то приходится клещами вытягивать, как будто нам это нужно(( Ему следует читать, читать, и ещё раз читать про прерывания, про настройку NVIC. Думаю, что с наскоку всё это не осилить, ибо каждый раз что-то новое всплывает. @ART_ME, выкладывайте проект уже, не думаю, что у вас там что-то секретное. Версию Иара только сообщите. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 9 октября, 2019 Опубликовано 9 октября, 2019 · Жалоба Вы правда потом сможете это развидеть? :D Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 12 октября, 2019 Опубликовано 12 октября, 2019 · Жалоба Коротко. Согласно мануалу на библиотеку пакостный блок занимается синхронизацией отработки ошибки. Дело нужное, но в настоящий момент не важное, да и решаемое иными способами. Поэтому весь блок TIM1_BRK_IRQHandler был закоментирован, и программа пошла дальше. До успеха далеко, но работать можно. Всем спасибо за участие. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ART_ME 0 15 октября, 2019 Опубликовано 15 октября, 2019 · Жалоба Сорри за беспокойство, нужна маленькая помощь. Не по коду, а по опыту работы с IDE. Есть блок программы, в нем в числе других многих расписаны функции А и В. В описании указано, что функция В должна быть вызывать только после функции А. В блоке есть вызов функции А, но нет вызова функции В. Ни до, ни после функции А. И в поиске по файлам я вызова функции В нигде не обнаружил. Но она должна быть, т.к. без этой функции программа работать точно не будет. Может быть функция В вызывается прерыванием? Но установка брейкдауна внутрь её показала, что программа в эту функцию не заходит совсем. Как быть в такой ситуации, т.е. как в IDE найти кто и каким образом должен вызвать функцию В? Заранее спасибо за помощь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 15 октября, 2019 Опубликовано 15 октября, 2019 · Жалоба 15 minutes ago, ART_ME said: т.е. как в IDE найти кто и каким образом должен вызвать функцию В? CTRL+SHIFT+F. В окно поиска вбить название функции. Также можно закомментировать функцию, и запустить компиляцию. Если она где-то вызывается, то вы получите ошибку компилятора с указанием файла и строки, где был вызов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 15 октября, 2019 Опубликовано 15 октября, 2019 · Жалоба 14 minutes ago, ART_ME said: как в IDE найти кто и каким образом должен вызвать функцию В? Сделать поиск имени функции по всему проекту пробовали? Сколько нашлось? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 15 октября, 2019 Опубликовано 15 октября, 2019 · Жалоба Ну из области фантастки: функция вызвыается по своему адресу, только он вычисляется на основании того, в какую секцию линкер кладёт эту функцию. Здесь чуть сложнее. Нужен код. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться