1874ВЕ7Т/1874ВЕ71Т прерывания UNIOPCODE SWTRAP

Модераторы: ea, Alis, pip, gurzzza, _sva_

Ответить
AVerdi
Сообщения: 6
Зарегистрирован: 16 дек 2022, 16:17
Предприятие: Концерн Автоматика

1874ВЕ7Т/1874ВЕ71Т прерывания UNIOPCODE SWTRAP

Сообщение AVerdi »

Здравствуйте!
В руководстве пользователя говорится:
Неподдерживаемый код. При попытке ЦПУ выполнить неподдерживаемый код,
появившийся в результате программной или аппаратной ошибки, произойдет переход по
вектору UNIOPCODE c адресом 2012h. Вектор должен содержать стартовый адрес
подпрограммы обработки ошибки.
Программное прерывание. Используется при отладке программ и генерации
программных прерываний и позволяет вырабатывать прерывания после выполнения
каждой команды. Вектор SWTRAP, расположенный по адресу 2010h, должен содержать
стартовый адрес подпрограммы обслуживания прерывания.
Подскажите:
1) как по данным векторам 2012h и 2010h расположить стартовый адрес подпрограммы?
2) каким образом можно сгенерировать срабатывание прерывания SWTRAP?
SanekV
Специалист
Сообщения: 26
Зарегистрирован: 01 ноя 2013, 09:38

Re: 1874ВЕ7Т/1874ВЕ71Т прерывания UNIOPCODE SWTRAP

Сообщение SanekV »

1) Так же как и для других прерываний.
2) Есть инструкция TRAP (программное прерывание), которая и вызывает прерывание SWTRAP
AVerdi
Сообщения: 6
Зарегистрирован: 16 дек 2022, 16:17
Предприятие: Концерн Автоматика

Re: 1874ВЕ7Т/1874ВЕ71Т прерывания UNIOPCODE SWTRAP

Сообщение AVerdi »

SanekV писал(а): 22 дек 2022, 11:21 1) Так же как и для других прерываний.
2) Есть инструкция TRAP (программное прерывание), которая и вызывает прерывание SWTRAP
1) Для других прерываний используется формат
#pragma interrupt <vec> <func_name>
где vec номер вектора прерывания от 0 до 16,
так для UART инициализация выглядит следующим образом
#pragma interrupt 8 IRQ_uart_rx_tx
для UNIOPCODE номера вектора прерывания нет (согласно Таблицы 6.1 Руководства пользователя)
отсюда собственно и вопрос, не могли бы вы привести пример кода?

2) тот же вопрос, как назначить подпрограмму обслуживания прерывания
dav
Сообщения: 209
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1874ВЕ7Т/1874ВЕ71Т прерывания UNIOPCODE SWTRAP

Сообщение dav »

AVerdi писал(а): 22 дек 2022, 13:07
1) Для других прерываний используется формат
#pragma interrupt <vec> <func_name>
где vec номер вектора прерывания от 0 до 16,
так для UART инициализация выглядит следующим образом
#pragma interrupt 8 IRQ_uart_rx_tx
Доброго времени суток!

Согласно Руководству пользователя на компилятор (CMC-96) из меню "Справка" IDE CodeMaster-96:
Вектор vec может принимать значения в диапазоне от 0 до 18.
Поэтому, для указания вектора прерывания SWTRAP и UNIOPCODE необходимо задавать номер вектора 17 и 18, соответственно.
Пример инициализации:

Код: Выделить всё

void SWTRAP_INT();
void UNIOPCODE_INT();
#pragma interrupt 17  SWTRAP_INT
#pragma interrupt 18  UNIOPCODE_INT
Ответить

Вернуться в «Микроконтроллеры семейства MCS-96»