Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Грабли с FIQ в CrossWorks1.7.9 ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
GetSmart
Хотел сделать FIQ на Си под CrossWorks1.7 build 9. Сперва сделал IRQ для прерывания от АЦП. Всё заработало с первого раза. Потом решил переделать на FIQ. Долго трах..ся, но поведение уже отлаженной программы было каким-то безумным. Через несколько часов залез в ассемблерный листинг и вижу там глюк. Прикладываю фотки пролога и эпилога прерывания. На эпилоге видно, что вместо загрузки PC (для переключения режима) почему-то загружается LR, из-за чего управление не возвращается из FIQ, а проц продолжает исполнять всякий мусор после этого эпилога.
На картинке 1 -пролог, на картинке 2 - эпилог. Оптимизация = level 1.

прототип прерывания объявлен как
void AdcIntr() __attribute__((interrupt ("FIQ")));

--------
Щас заменил __attribute__((interrupt ("FIQ"))) на __attribute__((interrupt ("IRQ"))) и тот же глючный эпилог остался. Ничего не понимаю. Может что-то ещё нужно указывать? Как с инлайном например - одного атрибута __attribute__((always_inline)) недостаточно, необходимо ещё __inline перед прототипом приписывать, иначе прога зависает. Пока детально не изучал почему так.
GetSmart
Нашёл похожие темы. Оказывается я не один такой везучий smile.gif
http://electronix.ru/forum/index.php?showt...1799&hl=gcc
http://electronix.ru/forum/lofiversion/index.php/t25812.html

ЗЫ. Кто-нить знает как для последней ссылки получить полную версию, а не lofiversion? Поиск по форуму угроблен окончательно. А в предыдущей версии форума работал нормально.
aaarrr
Цитата(GetSmart @ Sep 16 2009, 20:49) *
ЗЫ. Кто-нить знает как для последней ссылки получить полную версию, а не lofiversion? Поиск по форуму угроблен окончательно. А в предыдущей версии форума работал нормально.

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