Перейти к содержанию
    

Да. Точно. За основу то взял пример стандартный... Когда не знаешь, да еще и забудешь.. таких делов можно наворотить. =P

И все-таки после брейкпоинта прерывания иногда умирают. Хотя флаги в AIC_IPR и AIC_IMR стоят. CPSR_I=0. Ну ладно, это не критично - отлажусь на осциллографе и консоли.

Еще раз стандартный startup посмотреть надо, там была ошибка, не восстанавливались флаги после выхода из прерывания.

IRQ_Handler_Entry:

 

;- Manage Exception Entry

;- Adjust and save LR_irq in IRQ stack

sub lr, lr, #4

stmfd sp!, {lr}

;- Save and r0 in IRQ stack

stmfd sp!, {r0}

mrs r0, spsr

stmdb sp!,{r0} ; Save the context of the current task. !!!!!!

 

;- Write in the IVR to support Protect Mode

;- No effect in Normal Mode

;- De-assert the NIRQ and clear the source in Protect Mode

ldr r14, =AT91C_BASE_AIC

ldr r0 , [r14, #AIC_IVR]

str r14, [r14, #AIC_IVR]

 

;- Enable Interrupt and Switch in Supervisor Mode

msr CPSR_c, #ARM_MODE_SVC

 

;- Save scratch/used registers and LR in User Stack

stmfd sp!, { r1-r11, r12, r14}

 

;- Branch to the routine pointed by the AIC_IVR

mov r14, pc

bx r0

 

;- Restore scratch/used registers and LR from User Stack

ldmia sp!, { r1-r11, r12, r14}

 

;- Disable Interrupt and switch back in IRQ mode

msr CPSR_c, #I_BIT | ARM_MODE_IRQ

 

;- Mark the End of Interrupt on the AIC

ldr r14, =AT91C_BASE_AIC

str r14, [r14, #AIC_EOICR]

 

ldmia sp!,{r0} ; и здесь вот так !!!!!!!!

msr SPSR_cxsf,r0 ; и здесь вот так !!!!!!!!

;- Restore SPSR_irq and r0 from IRQ stack

ldmia sp!, {r0}

 

;- Restore adjusted LR_irq from IRQ stack directly in the PC

ldmia sp!, {pc}^

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...