реклама на сайте
подробности

 
 
> Проблемы с IRQ в IAR, Код IRQ не компилится, что делать
Lexy_one
сообщение Nov 16 2010, 15:34
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 28-07-09
Из: Чернигов
Пользователь №: 51 621



Помогите начинающему....
Перехожу с АВР на АРМ и тут возникают проблемы... Процессор 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.
такое ощущение что чтото не настроено... или не подключено...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yakub_EZ
сообщение Nov 18 2010, 06:49
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 329
Регистрация: 6-12-08
Из: Москва
Пользователь №: 42 252



Задам свой вопрос здесь, так как тема недавняя, про прерывания, и про почти такой же процессор - 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 . Подскажите пожалуйста, наверняка что то здесь до безобразия глупое.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th August 2025 - 08:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016