ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 июля
122796 Топик полностью
Сергей Борщ (11.06.2008 13:38, просмотров: 101) ответил astroalek на Да это понятно, а на какие адреса ссылаться? Допустим поступило прерывание XIRQ0, и вызывается обработчик прерываний. В МК51 там адреса по которым выполняется программа при поступлении прерываний а здесь как?
А здесь всего два вектора. И к ядру в нормальных процессорах довешан контроллер прерываний, который выдает адрес обработчика. У ADuC на контроллере прерываний решили сэкономить, поэтому попав в прерывание вы должны прочитать IRQSIG, IRQSTA, по выставленным в них битам определить, какое из прерываний сработало и самостоятельно перейти на нужный обработчик. Что-то вроде такого: extern "C" __irq __arm void IRQ_Switch() { dword irq = IRQSIG; irq &= IRQSTA; if(irq & GP_TIMER_BIT) { Timer_ISR(); } if(irq & RTOS_TIMER_BIT) { OS::SystemTimer_ISR(); } }