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

 
 
> AT91SAM7S прерывания в SRAM (IAR)
romashko
сообщение Sep 13 2007, 03:21
Сообщение #1


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

Группа: Свой
Сообщений: 85
Регистрация: 25-12-06
Пользователь №: 23 865



Уже второй бьюсь над прерыванием таймера в ИАР 4.4A
Когда самбой загружаю - прерывание НЕ работает! sad.gif

Вот код:

__irq __arm void TimerIRQ(void)
{
PITC_PIVR; //читаем интеррупт-статус таймера
OutLED(0); //зажигаем лампочку
AIC_EOICR=0; //энд оф интеррупт
}

void SetTimerFrequency(unsigned long int Frequency) //установка частоты тиков таймера
{
PITC_PIMR=0x03000000|(2995200/Frequency); //CPU Clock/16/Frequency
}

void EnableTimerIRQ(unsigned long int Priority) //настраивем AIC и PIT
{
AIC_SVR1=(unsigned long int)TimerIRQ; //адрес хэндлера
AIC_SMR1=Priority|(1<<5); //приоритет и срабатывание
AIC_IECR|=(1<<1); //разрешаем прерывание таймера
AIC_IDCR&=~(1<<1);
}

int main(void)
{
PMC_PCER|=(1<<2); //Enable PIOA Clock
PIO();
SetTimerFrequency(4000);
EnableTimerIRQ(7);
GO: //пустой цикл
goto GO;
}

в ИАРе в опциях линкера описываю регионы (at91sam7s256):

Vectors 0x202000-20203F
Code 0x202040-209FFF
Data 0x20A000-20CFFF

Прерывания не работают! sad.gif

как сделать прерывание рабочим? где ИАРу прописать, чтоб REMAP сделал и откопировал вектора в нужную область? help.gif

Сообщение отредактировал romashko - Sep 13 2007, 03:21
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amw
сообщение Sep 17 2007, 10:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Ни с ИАР ни с кейл я не знаком, но по видимому, они используют разные команды по векторам.
Например если по вектору IRQ размещена команда использующая СМЕЩЕНИЕ от текущего PC как адрес назначения, то после копирования векторов по другому адресу сещения оказываются НЕВЕРНЫМИ.
Часто используется такая техника:
В векторах используют команды LDR PC,=IRQ_HANDLER, а сами значения ложат СРАЗУ ЗА ВЕКТОРАМИ и копируют и вектора и адреса. А адреса - абсолютные. Тогда будет работать не зависимо от того, скопированы вектора или нет.
Проверте по дизассемблеру.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- romashko   AT91SAM7S прерывания в SRAM (IAR)   Sep 13 2007, 03:21
- - Сергей Борщ   Цитата(romashko @ Sep 13 2007, 06:21) Уже...   Sep 13 2007, 09:09
|- - romashko   Всеравно не получается Често говоря, я ничерта н...   Sep 14 2007, 00:39
|- - Сергей Борщ   Цитата(romashko @ Sep 14 2007, 03:39) Чес...   Sep 14 2007, 06:59
|- - romashko   Цитата(Сергей Борщ @ Sep 14 2007, 17:59) ...   Sep 16 2007, 22:23
|- - romashko   А под самопальным JTAGом вы имели ввиду виглер?   Sep 17 2007, 06:56
|- - Сергей Борщ   Цитата(romashko @ Sep 17 2007, 09:56) А п...   Sep 17 2007, 07:17
|- - alexander55   Цитата(Сергей Борщ @ Sep 17 2007, 11:17) ...   Sep 17 2007, 12:00
|- - Сергей Борщ   Цитата(alexander55 @ Sep 17 2007, 15:00) ...   Sep 17 2007, 13:05
|- - Сергей Борщ   Цитата(Сергей Борщ @ Sep 17 2007, 16:05) ...   Sep 17 2007, 17:41
- - romashko   ИАР: B InitReset ...   Sep 17 2007, 22:36
- - Сергей Борщ   Цитата(romashko @ Sep 18 2007, 01:36) ИАР...   Sep 18 2007, 07:08
- - amw   Цитата(romashko @ Sep 18 2007, 01:36) ИАР...   Sep 18 2007, 13:56
- - Сергей Борщ   Цитата(amw @ Sep 18 2007, 16:56) Перемеща...   Sep 18 2007, 23:15
- - romashko   Ура! Получилось! Короче, полностью старт...   Sep 19 2007, 01:37


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

 


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


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