Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с IRQ в IAR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Lexy_one
Помогите начинающему....
Перехожу с АВР на АРМ и тут возникают проблемы... Процессор LPC2368.
Создал проект... простой.. мигание светодиодом. За основу взял пример GettingStarted из IAR.
и не работает прерывание... Вернее его код не компилится и по вектору осуществляется переход на Abort_handler. Хотя исходный пример работает хоть и написан под LPC2378 (правда пришлось переназначить порты). Я уже отчаялся и втянул весь код примера в свой, установил идентичные настройки и ни какого результата, все равно в дизасемблере кода IRQ нет...
Подскажыте пож что делать....
вот код проблемного прерывания...

__irq __arm void IRQ_Handler (void)
{
void (*interrupt_function)();
unsigned int vector;
vector = VICADDRESS;
interrupt_function = (void(*)())vector;
if(interrupt_function != NULL)
{ interrupt_function(); }
else
{ VICADDRESS = 0; }
}

P.S.
такое ощущение что чтото не настроено... или не подключено...
psL
Цитата(Lexy_one @ Nov 16 2010, 18:34) *
Вернее его код не компилится и по вектору осуществляется переход на Abort_handler.

Одно из двух: либо код не компилируется, либо компилируется, но уходит в Abort_handler при выполнении.
Было бы более информативно прикрепить к теме архив с проблемным проектом.
gmp
Тоже самое было у меня, правда проц ADuС. Программа постоянно крутилась в Abort_handler. Запустил проект из примера, там все работало. Установил в своем проекте все настройки, как в примере, все равно не помогло, тогда просто подменил в проекте примера исходник на свой, откомпилировал и все работает.
dimka76
Покажите как у вас настроен VIC, стартап тоже надо бы показать.
Lexy_one
Прикрепляю проблемный проэкт.
Посмотрите.
Прерывание IRQ действительно не компилится...
dimka76
Цитата(Lexy_one @ Nov 17 2010, 10:29) *
Прикрепляю проблемный проэкт.
Посмотрите.
Прерывание IRQ действительно не компилится...


раскоментируйте строку
Код
#pragma vector=IRQV

psL
Цитата(Lexy_one @ Nov 17 2010, 10:29) *
Прикрепляю проблемный проэкт.

А стартап код (файл с расширением .s79) точно не нужен?
Lexy_one
Спсиба за помощь...
Пересоздал по 4 разу проет и заработало..!!! smile.gif

P.S.
Хотя и не понял почему не работало раньше...
Ведь делал все вроди правильно?
yakub_EZ
Задам свой вопрос здесь, так как тема недавняя, про прерывания, и про почти такой же процессор - LPC2388, но среда Keil
Отрабатываю прерывания по книге Мартина. В книге написано что надо менять строчку в стартап коде, но в приложенном к книге примере вектор оставлен в неизменном виде. После компиляции и запуска отладки программа успешно вылетает в пустой цикл. Открываю переферию на вкладке Vectored Interrupt Controller , ставлю галочку в квадратик SoftInt, после чего программа переходт
в список векторов в строку
Код
FIQ_Handler     B       FIQ_Handler

где дальше сидит, не обращая внимание на посторонних. smile.gif
код программы:
Код
#include <LPC23xx.H>                       /* LPC23xx definitions */


int main (void)
{


  IODIR1 = 0x00FF0000;                     /* P1.16..23 defined as Outputs */
  PINSEL4 = 0x00100000;                      /*   enable EINT0     */

  VICIntSelect =  0x00004000;              /*   enable EINT0     */
  VICIntEnable =  0x00004000;              /*   enable EINT0     */

  IOCLR1 =      0x00FF0000;

  while (1)
   {                             /* Loop forever */
           
  
  }
}

  void FIQ_Handler (void)
{
    IOSET1 =   0x00FF0000;
    EXTINT =   0x00000002;
}


Пробовал добавлять в стартрап в вектора после названия метки - ?A, напротив void FIQ_Handler (void) добавлял __fiq. Не помогает sad.gif . Подскажите пожалуйста, наверняка что то здесь до безобразия глупое.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.