roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 18:51

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 12:56 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Дошел я наконец до прерываний...
Никак не могу понять откуда берется связь обработчика с самим прерыванием.
Вот написал я функцию
Код:
void SPI0Handler (void) __irq

И что теперь писать в lpc2400.s ?
Там я вижу такую запись:
Код:

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, IRQ_Addr
                LDR     PC, [PC, #-0x0120]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0                      ; Reserved Address
IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

Undef_Handler   B       Undef_Handler
SWI_Handler     B       SWI_Handler
PAbt_Handler    B       PAbt_Handler
DAbt_Handler    B       DAbt_Handler
IRQ_Handler     B       IRQ_Handler
FIQ_Handler     B       FIQ_Handler


Откуда берутся эти адреса и как мне получить адрес моего обработчика чтоб вставить его туда?

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 13:36 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Наверно в примерах надо позырить.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 13:59 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
А еще лучше в книжке "Микроконтроллеры ARM7 семейства LPC2000" Редькин П.П.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 14:52 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Там все устройство описано. А вот как это все программировать - непонятно. Что в стартап писать, как обработчики объявлять и к прерываниям привязывать - совершенно непонятно...

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 15:09 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
А разобрать один из бесконечного числа примеров религия не позволяет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 15:34 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Разбираю... Честно говоря мало что понятно. Неужели просто назвать функцию void EINT0_Handler (void) __irq - уже значит привязать ее к прерыванию? А как он понимает к какому? Что-то не верится. Попробую щас что-то свое в таком духе сгенерить...

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 15:43 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Да, просто по названию идет привязка к определенному прерыванию. По моему в заголовочном файле идет опиание и привязка какого к чему

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 15:47 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Оказалось что не в файле. Есть такой файлик irq.c - там есть функция привязки.
Например
Код:
install_irq(EINT0_INT,(void *)EINT0_Handler,HIGHEST_PRIORITY )

Привязывает вектор EINT0_INT к функции EINT0_Handler и дает высший приоритет.
Естественно в настройках источника прерывания (в данном случае внешнего входа) надо его разрешить.
Щас проверю как оно работает...

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 15:50 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Саша, ну честно, не ожидал от тебя таких вопросов =)

Вектора прописываются в контроллере прерываний, там задается источник, приоритет и указатель на функцию обработчик. Они маскируемые потому-что. Если, к примеру, у тебя не маскируемые прерывания, то у каждой периферии свой обработчик с масками источника.

Добавлено спустя 38 секунд:
Все это в даташите последовательно рассказано!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 16:38 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Это я понял... Прописал вроде все как надо. Теперь думаю почему ноль эффекта...

Добавлено спустя 10 минут 39 секунд:
Как обычно проблему создавала внешняя схема. Я уж какие только примеры туда не вставлял - ноль эффекта. Сигнал внешнего прерывания вообще до проца не доходил. Щас его ногу пинцетом подергал - прерывание случилось! :D

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 16:41 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Лучше всего проверять базовый функционал с помощью симулятора Keil, очень удобно. Да еще и скрипты писать можно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 21:15 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
поточнее насчет последнего

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 21 окт 2010, 21:49 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
в примерах точно в хелпе коменты.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 22 окт 2010, 00:51 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
скрипты описаны в примерах?

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в Keil
СообщениеДобавлено: 22 окт 2010, 09:00 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
ага.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO