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

 
 
> Прерывания в AT91SAM7X. Не входит в обработчик.
talos85
сообщение Jan 30 2013, 11:15
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 30-01-13
Пользователь №: 75 404



Добрый день.
Коллеги, прошу помощи, всю голову уже сломал.
Необходимо прерывание по таймеру. Инициализирую AIC, инициализирую и запускаю таймер. Таймер считает. Но обработчик прерывания не вызывается, не смотря на то, что я в IARe вижу, что в AIC_IPR (pending register) выставляется соответствующий бит.

Кусок программы:
CODE
volatile uDWORD temp = 0;

void Timer0_Handler()
{
temp++;
AT91C_BASE_AIC -> AIC_EOICR = 1;
}

void main()
{
AT91C_BASE_PMC -> PMC_PCER = (1 << AT91C_ID_TC0);
AT91C_BASE_AIC -> AIC_SMR[AT91C_ID_TC0] =
(0x00 << 5) | // Level sensitive
(0x07 << 0); // Prior
AT91C_BASE_AIC -> AIC_SVR[AT91C_ID_TC0] = (unsigned int) Timer0_Handler;
AT91C_BASE_AIC -> AIC_ICCR = (0x1 << AT91C_ID_TC0);
AT91C_BASE_AIC -> AIC_IECR = (0x1 << AT91C_ID_TC0);

AT91C_BASE_TC0 -> TC_CMR =
(0x1 << 0) |
(0x2 << 13) |
(0x1 << 15);

AT91C_BASE_TC0 -> TC_RC = 60000;
AT91C_BASE_TC0 -> TC_CCR = (0x1 << 0) | (0x1 << 2);
AT91C_BASE_TC0 -> TC_IER = (1 << 4);
while (1);
}

Пробовал также сделать прерывание на ногу контроллера. Тот же результат. Бит в AIC Pendidng-регистре выставляется, а в обработчик программа не входит.

В чем может быть дело? Что я упустил?

Заранее благодарен.

Сообщение отредактировал IgorKossak - Jan 30 2013, 13:48
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DmitryM
сообщение Jan 30 2013, 11:20
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(talos85 @ Jan 30 2013, 14:15) *
Но обработчик прерывания не вызывается

Покажите startup.s
Глобально прерывания в ядре разрешены? Что в CPSR?
Go to the top of the page
 
+Quote Post
talos85
сообщение Jan 30 2013, 11:24
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 30-01-13
Пользователь №: 75 404



Цитата(DmitryM @ Jan 30 2013, 15:20) *
Покажите startup.s
Глобально прерывания в ядре разрешены? Что в CPSR?


А можно поподробнее про CPSR?
Файл прикрепил.Прикрепленный файл  Cstartup.zip ( 3.48 килобайт ) Кол-во скачиваний: 68

Значения в CPSR:
N = 0
Z = 1
C = 1
V = 0
Q = 0
I = 1
F = 1
T = 0
MODE = 0b11111


Сообщение отредактировал talos85 - Jan 30 2013, 11:29
Go to the top of the page
 
+Quote Post



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

 


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


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