Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кто работал с AS-9200
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Отладочные платы
Daermon
Если кто то писал в IAR 4.41 помогите!

Не могу вызвать прерывание таймера ... вроде бы все делаю правильно.

Инизиализирую таймер:

AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF ; /* reset the aic, disable all interrupts */
AT91C_BASE_AIC->AIC_ICCR = 0xFFFFFFFF ; /* clear all interrupts */
AT91C_BASE_AIC->AIC_EOICR = 0 ; /* unstack one level */
AT91C_BASE_PMC->PMC_PCER |= ( 1UL<<AT91C_ID_TC0 ) ; /* enable tc0 */
AT91C_BASE_AIC->AIC_IDCR |= ( 1UL<<AT91C_ID_TC0 ) ; /* disable pio interrupt */
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = ( AT91_REG )timer0_c_irq_handler; /* set isr */
//* Open timer0
AT91F_TC_Open(AT91C_BASE_TC0,5,AT91C_ID_TC0);
//* Start timer0
AT91C_BASE_TC0->TC_CCR |= AT91C_TC_SWTRG ;
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = ( AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE )|( 1/* prio 1*/ ) ;
AT91C_BASE_AIC->AIC_ICCR |= ( 1UL<<AT91C_ID_TC0) ; /* clear pio interrupt */
AT91C_BASE_AIC->AIC_IECR |= ( 1UL<<AT91C_ID_TC0 ) ; /* enable pio interrupt */
__enable_interrupt( ) ;
AT91C_BASE_TC0->TC_IER |= AT91C_TC_CPCS | AT91C_TC_COVFS | AT91C_TC_LOVRS; // IRQ enable CPC


AT91F_TC_Open

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 ;
// TC_pt->TC_RC =60000;
//* Enable the clock
TC_pt->TC_CCR |= (AT91C_TC_CLKEN) ;
//* End
};



Сам обработчик
static __arm __irq 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;
count_timer0_interrupt++;
AT91C_BASE_AIC->AIC_EOICR = 0 ; /* end interrupt */
};



Может где то ошибка?
Если у кого есть примеры для Аргусовтовской платы скиньте пожалуйста.
Dron_Gus
В инициализации таймера попробуйте добавить
//* Start timer0
AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;

И зря вы этот вопрос поместили в подфорум. В форуме по АРМам больше народу "тусуется".

Добавил: извиняюсь, у Вас это уже есть... Тогда не знаю...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.