работа с прерываниями. векторный режим.

klen

New member
Здравсвуйте. приобрел отладочную плату MK32_DEV_BOARD. в процессе изучения. в документации на ядро SCR1 описан всктроенный контроллер прерываний. В техническом описании на k1948вм018 - что он отключен. описание внешнего - реализованного в микросхеме - оаисан 3.12 Программируемый контроллер прерываний, не понятно как взаимодействует с ядром. описание на 4 странички. я не смог нигде явно прочитать о поддержке вектроного режима и как его настроить. при попытке писать в CSR регистр MTVEC значение адреса таблицы обработчиков с младшими битами 3 для указания векторного режима - запись происходить с непонятным результатом после записи в него 0x02000000 | 1 регистр пеерходит в сототяние 0x020000с0. тоесть взводятся 6 и 7 биты. бит режима остается нулевым . это поведение я не могу связать с описанием в доке
SCR1 External Architecture Specification Syntacore, scr1@syntacore.com Version 1.2.9, 2022-01-13
3.2.4.8. MTVEC [0x305]

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

mscs

Member
Векторного контроллера прерываний в МК К1948ВК018 нет. При возникновении любого исключения или активизации любого запроса прерывания управление передается на адрес, содержащийся в регистре MTVEC. Начальное состояние указанного регистра - 0xC0, изменить можно только старший байт, например, для размещения обработчика во встроенном ОЗУ МК - 0x020000C0.
 

klen

New member
и что? авторы предлагают в обработчике прерываний делать болшой switch на (32 внешних прерывания + 9 исключений ядра) = 41 ветки.. я правильно понял? только так и не иначе,
 

mscs

Member
Исключения отпадают сразу (достаточно сохранить MEPC в отладочных целях). Использование всех возможных запросов прерывания в одном проекте маловероятно (учитывая имеющиеся ресурсы).
Разместить обработчик во встроенном ОЗУ. Реализовать обработчик на языке ассемблера. Проверять по цепочке, сначала те запросы, которые требуют минимального времени реакции (если это не спасает, задействовать КПДП). Сохранять только изменяемые регистры.
В целом: неприятно, но не смертельно.
 

klen

New member
а нелья было в регистр сохранить индекс источника прерывания чтоб по цепочке ничего не проверять? жесть. сколько штук транзисторов сэкономили?

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

в любом случае с чегото нужно начинать - иначе никогда не научишься делать микросхемы.
 

ejsanyo

Active member
Ну так в принципе и видно сразу, что этот чип не создавался под работу в системах реального времени. А создавался в основном исходя из специфики потребительской продукции Микрона - смарт-карты и их обслуживание. 💳
 
Сверху