emerg_reanimator 0 24 мая, 2005 Опубликовано 24 мая, 2005 · Жалоба Добрый день! Ситуация: ewarm-4.20a + wiggler. Отлаживаю uCOS-II для Olimex LPC E2124 . В случае, если ОС запускается из флэш - таймер тикает. Когда отлаживаюсь из C-spy один раз срабатывает прерывание от таймера0 и прерывание не сбрасывается. Вот код обработчика: void Tmr_TickISR_Handler (void) { T0IR = 0xFF; /* Clear timer #0 interrupt */ OSTimeTick(); /* If the interrupt is from the tick source, call OSTimeTick() */ #ifdef DEBUG_IAR_SIM_EN VICVectAddr = (INT32U)Tmr_TickISR_Handler; #else VICVectAddr = 0; /* */ #endif } Код настройки таймера: void Tmr_TickInit (void) { /* VIC TIMER #0 Initialization */ VICIntSelect &= ~(1 << VIC_TIMER0); /* Enable interrupts */ VICVectAddr2 = (INT32U)Tmr_TickISR_Handler; /* Set the vector address */ #ifdef DEBUG_IAR_SIM_EN VICVectAddr = (INT32U)Tmr_TickISR_Handler; // Simulate VIC #endif VICVectCntl2 = 0x20 | VIC_TIMER0; /* Enable vectored interrupts */ VICIntEnable = (1 << VIC_TIMER0); /* Enable Interrupts */ T0TCR = 0; /* Disable timer 0. */ T0PC = 0; /* Prescaler is set to no division. */ T0MR0 = CPU_PERIPHERAL_CLK_FREQ / OS_TICKS_PER_SEC; /* Count up to this value. */ T0MCR = 3; /* Reset and interrupt on MR0 (match register 0). */ T0CCR = 0; /* Capture is disabled. */ T0EMR = 0; /* No external match output. */ T0TCR = 1; /* Enable timer 0 */ } В чём жучок? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 25 мая, 2005 Опубликовано 25 мая, 2005 · Жалоба А прерывание в системе только одно? А OS_CPU_IRQ_ISR_Handler можно посмотреть? У меня оно вот такое: typedef void (*PFNCT)(void); void OS_CPU_IRQ_ISR_Handler (void) { PFNCT pfnct; pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */ while (pfnct) { /* Handle ALL interrupting devices */ (*pfnct)(); /* Call ISR for interrupting device */ VICVectAddr = 0; /* update priority hardware */ pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */ } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emerg_reanimator 0 26 мая, 2005 Опубликовано 26 мая, 2005 · Жалоба Прерывание одно. Но дело скорее всего в среде разработки. Потому как под 3.21а работает без проблем и с двумя прерыванями. Прадва грузится по Wiggler-у немного медленее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться