Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не формируется вектор прерывания
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
jorikdima
Скачал тут новую версию ИАР для MSP430 5.30.3 Начал было делом заниматься, смотрю не работает софт, который стабильно до этого работал. В итоге выяснилось, что у меня стоит обработчик прерывания на вочдог, а он не формируется компайлером. В памяти по нужному вектору стоят дефолтовые 0xffff , что приводит к сбросу, как только мы туда попадаем.
Это касается не всех векторов, только этого. Он описан на самом деле в scmRTOS версии 3.10, поэтому если кто хочет посмотреть скачайте эту версию и попробуйте скомпилить пример. Речь полагаю не о как таковом векторе WDT (я проверил, само значение WDT_VECTOR верное), а, видимо, о какой то форме определения вектора прерывания (там типа через дефайны многоэтажные), которая стала вдруг непонятной компайлеру (с 5.20 все ОК было) .
Кто-то сталкивался или у меня вечер пятницы?

Ну да. Не пятница.
Взял и поставил
#pragma vector=WDT_VECTOR
прямо над функцией-обработчиком и все стало ОК. Изначально такая прагма стояла над объявлением функции в хедере. Второй баг уже в ИАРе нахожу.
Dog Pawlowa
Цитата(jorikdima @ Sep 9 2011, 22:28) *
Изначально такая прагма стояла над объявлением функции в хедере. Второй баг уже в ИАРе нахожу.

Не сказал бы, что это баг. Объявление в хедере никому не нужно, все примеры в мануале с прагмой перед определением функции.
Из опыта - если напишете на ИАР, они ответят, что у них ANSI C, С99 компилятор, и проблемы только Ваши.
jorikdima
Ну тогда надо примеры в scmRTOS поправить раз и быть внимательнее всем остальным, имея ввиду это фичу sm.gif - два. Думаю люди нарвутся еще, раньше то работало. У меня благо это прерывание регулярное - сразу заметил. А если у кого будет редкое, срабатывая раз в месяц на... пусть даже сбой генератора, но обрабатываемое.
WHALE
Цитата(jorikdima @ Sep 9 2011, 23:28) *
Скачал тут новую версию ИАР для MSP430 5.30.3 Начал было делом заниматься, смотрю не работает софт, который стабильно до этого работал. В итоге выяснилось, что у меня стоит обработчик прерывания на вочдог, а он не формируется компайлером. В памяти по нужному вектору стоят дефолтовые 0xffff , что приводит к сбросу, как только мы туда попадаем.
Это касается не всех векторов, только этого. Он описан на самом деле в scmRTOS версии 3.10, поэтому если кто хочет посмотреть скачайте эту версию и попробуйте скомпилить пример. Речь полагаю не о как таковом векторе WDT (я проверил, само значение WDT_VECTOR верное), а, видимо, о какой то форме определения вектора прерывания (там типа через дефайны многоэтажные), которая стала вдруг непонятной компайлеру (с 5.20 все ОК было) .
Кто-то сталкивался или у меня вечер пятницы?

Ну да. Не пятница.
Взял и поставил
#pragma vector=WDT_VECTOR
прямо над функцией-обработчиком и все стало ОК. Изначально такая прагма стояла над объявлением функции в хедере. Второй баг уже в ИАРе нахожу.


Та-же хрень появилась в IAR AVR 6.0, в 5.30 все работало.
Только стал выдавать Warning[Ta006]: Interrupt function has no assigned vector,
хотя в хидере вектора определены.Прописывание его в с-файле решает проблему.
З.Ы. у вас "enable remarks" включено?

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.