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

 
 
> Помогите с прерыванием таймера, не срабатывает
coolibin
сообщение May 14 2009, 16:10
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Использую IAR 4.41A, JLink J-Tag дебагер, RAM дебаг, стандартный cstartup.
Код:
CODE


void AT91F_TC_Open(AT91PS_TC TC_pt, unsigned int Mode, unsigned int TimerId)
//* Begin
{
unsigned int dummy;

//* First, enable the clock of the TIMER
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<< TimerId ) ;

//* Disable the clock and the interrupts
TC_pt->TC_CCR = AT91C_TC_CLKDIS ;
TC_pt->TC_IDR = 0xFFFFFFFF ;

//* Clear status bit
dummy = TC_pt->TC_SR;
//* Suppress warning variable "dummy" was set but never used
dummy = dummy;
//* Set the Mode of the Timer Counter
TC_pt->TC_CMR = Mode ;

//* Enable the clock
TC_pt->TC_CCR = AT91C_TC_CLKEN ;
//* End
}

__ramfunc void timer0_c_irq_handler(void)
{
AT91PS_TC TC_pt = AT91C_BASE_TC0;
unsigned int dummy;
//* Acknowledge interrupt status
dummy = TC_pt->TC_SR;
//* Suppress warning variable "dummy" was set but never used
dummy = dummy;

}

...
AT91F_TC_Open(AT91C_BASE_TC0, TC_CLKS_MCK1024, AT91C_ID_TC0);

//* Open Timer 0 interrupt
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_TC0, 0x4, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer0_c_irq_handler);
AT91C_BASE_TC0->TC_IER = AT91C_TC_COVFS;
AT91F_AIC_ClearIt(AT91C_BASE_AIC, AT91C_ID_TC0);
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_TC0);

AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG;
...



код вроде сдерт с атмеловского примера, но прерывание все равно не генерируется. Причем если работать с флагом, а не с прерываниями, то все норм.

Сообщение отредактировал coolibin - May 14 2009, 16:12


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение May 15 2009, 16:55
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Я бы в код прерывания вставил что-нибудь полезное, заметное. А всякие отладчики выбросил бы в ближайшее мусорное ведро. Отладчик сделанный не своими руками - зло.

Сообщение отредактировал DpInRock - May 15 2009, 17:16


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- coolibin   Помогите с прерыванием таймера   May 14 2009, 16:10
- - aaarrr   1. У обработчика нет модификатора __irq 2. В обраб...   May 14 2009, 16:31
- - coolibin   но в примере этого тоже не было(((   May 14 2009, 16:53
- - DpInRock   Указанные aaarrr деяния могли скрываться внутри ст...   May 14 2009, 18:18
- - aaarrr   Угу, пора уже памятку повесить, что смотреть/выкла...   May 14 2009, 18:20
- - coolibin   Увы. Я так понимаю __irq говорит компилятору автом...   May 15 2009, 16:20
|- - defunct   Цитата(coolibin @ May 15 2009, 19:20) Пре...   May 15 2009, 16:26
- - DpInRock   Там вообще-то дофига стартапов. Какой именно? У м...   May 15 2009, 16:36
- - coolibin   Держи!   May 15 2009, 16:42
|- - defunct   Цитата(DpInRock @ May 15 2009, 19:55) Я б...   May 15 2009, 20:52
- - DpInRock   У меня просто никогда не было никаких отладчиков и...   May 15 2009, 21:39
|- - defunct   Цитата(DpInRock @ May 16 2009, 00:39) У м...   May 15 2009, 23:06
- - DpInRock   Не работать прерывание может по многим причинам. ...   May 16 2009, 23:53
|- - aaarrr   Цитата(DpInRock @ May 17 2009, 03:53) Не ...   May 17 2009, 00:44
- - DpInRock   ДЫк,если б руками писал, то рефлекс-то есть. А тут...   May 17 2009, 09:05


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 19:53
Рейтинг@Mail.ru


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