ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
21 июля
44910 Топик полностью
Ксения (24.11.2005 22:32, просмотров: 1) ответил she на по-моему проще cli + rjmp на вектор или rcall на обработчик, это и будет аналогом INT. еще б придумать, зачем это может быть нужно...
А кто sti будет делать? Вроде бы процедура прерывания, после своего завершения, возвращается в ту же точку, сохраняя флаг состояния (статус). Тогда получается уже cli+rcall+sti. На rjmp вроде бы на AVR нельзя, тогда прежде адрес возврата надо в RSTACK загонять. Но больше всего меня пугает очень строгий и однозначный запрет в мануале на прямые вызовы интеррапт-процедур. А нужно это мне затем, чтобы вызвать передачу байта из буфера для передачи в UART. У меня эта процедура работает про прерыванию "передатчик опустел". Естественно, в случае когда буфере ничего не осталось процедура прерывания возвращается, ничего не делая. А вот когда надо запустить процесс передачи из буфера приходится запускать ДРУГУЮ процедуру, по своему телу абсолютно идентичную интераптовской, то только оформленной, как обычная подпрограмма. Вот я и подумала, что последнюю можно было бы заменить симуляцией прерывания "передатчик опустел".