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

 
 
> LPC2294 + IAR + Прерывания
Diablo
сообщение Apr 16 2012, 15:58
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 6-02-12
Пользователь №: 70 116



Добрый вечер!

Решил разобраться с работой прерываний на МК LPC 2294. Начал с самого простого - взял готовый пример поставляемый вместе со средой разработки, но он к сожалению оказался нерабочим. Выяснилось, что не работают прерывания, т.к. если убрать обработчики прерываний и формировать задержку простым счетом , то пример работает.

В связи с этим у меня возникли несколько вопросов:

1) Почему не работают прерывания, в чем может быть причина?
2) Может быть что-то неправильно проинициализировано (не инициализировано вообще) для обработки прерываний в файле startup.s?
3) Можно ли обойтись в проекте без файла startup.s. (вопрос возник т.к. в прилагаемом проекте он отсутствовал).
Возможно при сборке проекта прилинковывается стандартный файл в каталоге со средой, но подходит ли он для моего процессора?

Насколько мне известно, в файле startup.s находится таблица векторов исключительных ситуаций и в нем же производится
инициализация указателей стек для различных режимов работы, настройка какой-либо периферии (опционально), ну и передача
управления функции main. Вместо файла начальной инициализации в настройках проекта указан файл с
расширением *.icf (Linker configuration file), в котором указано расположение векторов исключительных ситуаций и размеры стеков.
Может ли этот файл заменить startup код или же придется писать его ручками?

4) Если нет, то где можно подчерпнуть информацию по его написанию?
В Keil всё очень просто и структура файла довольно понятна, да и в книге Тревора Мартина все подробно описано, а вот в IAR
мне не совсем понятно как это делается.

Заранее благодарю за ответ

P.S. В качестве среды разработки используется IAR EWARM

Сообщение отредактировал Diablo - Apr 16 2012, 16:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Apr 19 2012, 18:07
Сообщение #2


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата
А почему 0x40002FFF? В доках на микроконтроллер 0x40003FFF верхняя граница.

Потому что я не задумываясь привёл цифру из UserManual, Table 17. LPC21xx and LPC22xx memory and peripheral configuration.
Там десяток опечаток - для всех контроллеров с 16 килобайт ОЗУ указано это значение.
Если верить на слово, что там всё-таки 16 килобайт, то Ваша цифра правильнее.

А обработчик прерывания у IAR'а дурацкий :-)
Кейл даёт следующий стартап:
Код
; Exception Vectors  Mapped to Address 0.
;  Absolute addressing mode must be used.
Vectors         LDR     PC, Reset_Addr        
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                NOP                           ; Reserved Vector
                LDR     PC, [PC, #-0x0FF0]    ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

В этом случае сразу же одной командой загружается адрес прерывания из соответствующего регистра (он не просто так расположен в самом конце адресного пространства!). VICVectAddr = 0; в конце прерывания надо делать самостоятельно.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Apr 20 2012, 08:26
Сообщение #3


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Проверил адреса VIC/TIM0/GPIO0 - совпадают с lpc23xx
Немного отличий в VIC - в lpc2294 меньше векторов прерываний
Слегка подкорректировал VIC (надеюсь всё исправил правильно).
Подкорректировал файл линкера под размер памяти в lpc2294
Убрал инициализацию PLL (не проверял, но думаю должно работать от встроенной RC-цепочки на 4 МГц)
Светодиод вывел на GPIO0 пин 2 (как в примере)

Скидываю Вам проект под iar5.40
У меня есть книга на английском Мартина Тревора - там описана организация векторных и невекторных прерываний. Но она весит 10МБ. Если у Вас нет могу скинуть по частям.

book

.

.

Сообщение отредактировал mempfis_ - Apr 20 2012, 08:24
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Diablo   LPC2294 + IAR + Прерывания   Apr 16 2012, 15:58
- - mempfis_   Возьмите стартап и icf файл из примеров иара для в...   Apr 16 2012, 17:01
- - Diablo   Собственно это я и сделал в первую очередь, весь к...   Apr 16 2012, 17:14
|- - mempfis_   Цитата(Diablo @ Apr 16 2012, 20:14) Собст...   Apr 16 2012, 17:35
- - Diablo   Вот код основной программы CODEint main (void) { ...   Apr 17 2012, 16:12
|- - mempfis_   Сравнил lpc22 с lpc23/lpc17 (с которыми я работал...   Apr 17 2012, 17:56
- - Diablo   Отображение векторов производится на Flash Что ка...   Apr 17 2012, 18:05
- - Diablo   Что-то я вообще ничего не понимаю! Зашил сего...   Apr 18 2012, 14:45
- - esaulenka   ЦитатаТакое ощущение, что управление пользовательс...   Apr 18 2012, 15:27
- - Diablo   ЦитатаЕсли у меня складывается такое ощущение, я п...   Apr 18 2012, 16:17
- - esaulenka   FlashMagic - это утилита для прошивки NXP'шных...   Apr 18 2012, 20:31
- - Diablo   Посмотрел я сегодня что и как располагается в памя...   Apr 19 2012, 16:19
- - esaulenka   Я ни разу не видел IAR ARM. Покажите, пожалуйста, ...   Apr 19 2012, 17:16
- - Diablo   Вот пожалуйста CODE __irq __arm void irq_handler(...   Apr 19 2012, 17:35
- - Diablo   Keil вообще намного проще для освоения для новичка...   Apr 19 2012, 18:17
- - esaulenka   Ну попробуйте переделать эту Вашу программу на кей...   Apr 19 2012, 18:24
- - Diablo   To mempfis_ Спасибо огромное, обязательно попробу...   Apr 20 2012, 14:47
|- - mempfis_   Цитата(Diablo @ Apr 20 2012, 17:47) И вы ...   Apr 20 2012, 15:09
- - Diablo   ЦитатаПри работе без прерываний не возникает исклю...   Apr 20 2012, 15:29


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 00:18
Рейтинг@Mail.ru


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