Инструкция AVR SEI

Инструкция AVR SEI ( http://www.atmel.com/webdoc/avrassembler/avrassembler. wb_SEI.html ) ждет завершения следующей команды до включения прерываний.

Если я использую другую команду для установки флага I в SREG, будет ли это также ждать 1 инструкция?

Другими словами: Ожидает ли функция инструкции SEI или регистра состояния?

Если это особенность инструкции SEI, то в какой момент флаг действительно устанавливается, в цикле, который выполняет SEI или со следующей инструкцией?

12 голосов | спросил jayjay 5 Jpm1000000pmTue, 05 Jan 2016 13:10:37 +030016 2016, 13:10:37

2 ответа


1

IMHO записывает в SREG все еще задержку 1 команда может быть протестирована следующим образом (псевдокод):

ISR() { PORTA = 0; while(1); }
main() 
{
    cli();
    DDRA = 0xff;
    configure_isr_for_level_interrupt_that_will_trigger_immediately();
    SREG = 0xff;
    cli();
    PORTA = 0xff;
    while(1);
}

К сожалению, мне не хватает времени для этого: (

ответил Vorac 5 Jpm1000000pmTue, 05 Jan 2016 17:15:55 +030016 2016, 17:15:55
0

Это не то, что он говорит. В документах говорится

  

Инструкция, следующая за SEI, будет выполнена перед любыми ожидающими прерываниями.

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

ответил patthoyts 5 Jpm1000000pmTue, 05 Jan 2016 15:20:04 +030016 2016, 15:20:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132