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

 
 
 
Reply to this topicStart new topic
> Проблемы с 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
psL
сообщение Nov 16 2010, 19:03
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



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

Одно из двух: либо код не компилируется, либо компилируется, но уходит в Abort_handler при выполнении.
Было бы более информативно прикрепить к теме архив с проблемным проектом.
Go to the top of the page
 
+Quote Post
gmp
сообщение Nov 17 2010, 05:14
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 10-10-07
Из: Челябинск
Пользователь №: 31 206



Тоже самое было у меня, правда проц ADuС. Программа постоянно крутилась в Abort_handler. Запустил проект из примера, там все работало. Установил в своем проекте все настройки, как в примере, все равно не помогло, тогда просто подменил в проекте примера исходник на свой, откомпилировал и все работает.
Go to the top of the page
 
+Quote Post
dimka76
сообщение Nov 17 2010, 05:34
Сообщение #4


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Покажите как у вас настроен VIC, стартап тоже надо бы показать.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Lexy_one
сообщение Nov 17 2010, 07:29
Сообщение #5


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

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



Прикрепляю проблемный проэкт.
Посмотрите.
Прерывание IRQ действительно не компилится...
Прикрепленные файлы
Прикрепленный файл  Test_LPC2368.rar ( 25.78 килобайт ) Кол-во скачиваний: 18
 
Go to the top of the page
 
+Quote Post
dimka76
сообщение Nov 17 2010, 09:58
Сообщение #6


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



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


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



--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
psL
сообщение Nov 17 2010, 09:59
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



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

А стартап код (файл с расширением .s79) точно не нужен?
Go to the top of the page
 
+Quote Post
Lexy_one
сообщение Nov 17 2010, 11:00
Сообщение #8


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

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



Спсиба за помощь...
Пересоздал по 4 разу проет и заработало..!!! smile.gif

P.S.
Хотя и не понял почему не работало раньше...
Ведь делал все вроди правильно?

Сообщение отредактировал Lexy_one - Nov 17 2010, 11:00
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Nov 18 2010, 06:49
Сообщение #9


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

Группа: Свой
Сообщений: 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 Текстовая версия Сейчас: 18th July 2025 - 06:25
Рейтинг@Mail.ru


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