[an error occurred while processing this directive] [an error occurred while processing this directive]
фрагмент "преамбулы" той ISR
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено vlad_ 28 сентября 2001 г. 18:27
В ответ на: Никаких потерь прерываний на KC/KR не замечал (+) отправлено Щ.С. 25 сентября 2001 г. 12:14

Cseg at 2006H
dcw INTR00 - HSO (INT03)
Cseg at 2018H
DCB 0EBH
Cseg at 203EH
DCW INT0 - NMI (INT15)

...

;===========================================
INT0: pusha
PUSH RES_LO
PUSH RES_HI
push tmp_lo
push tmp_hi

...

pop tmp_hi
pop tmp_lo
POP RES_HI
POP RES_LO
POPA
RET
;-------------------------------------------
INTR00: pushf
ei
PUSH RES_LO
PUSH RES_HI
push tmp_lo
push tmp_hi

...

pop tmp_hi
pop tmp_lo
POP RES_HI
POP RES_Lo
popf
RET
;===========================================


прерывание INT0 происходит с частотой 2500 Гц, INTR00 – с частотой 200 Гц.В INT0 не предусмотрено разрешение других прерываний, а пропуск одного INTR00 не создает проблем. До тех пор пока вызовы прерываний были разнесены между собой все было хорошо, но однако это система работает в реальном времени… Кстати такая проблема с прерываниями возникла не у меня одного, не смогу точно описать, но контроллер работал в другой системе и с другими прерываниями, но проблема была та же – “не откладывается одно из прерываний”.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru