ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
9 апреля
1580651 Топик полностью
Nikolay_Po (Сегодня, 17:55, просмотров: 56) ответил mse homjak на Принципиальная. В примере, одна команда сбрасывает одни биты и устанавливает другие. Непричастные сохраняют состояние. АВР сперва должэн вычитать порт, наложить маску для сброса, наложить маску для установки и записать взад.
Ну не совсем одна команда. НЯП, нужно сначала загрузить маску в регистр, потом записать в регистр по адресу. Проблема в том, что вместе, адрес регистра и маска - слишком велики, чтобы поместиться в одну команду. Поэтому, несмотря на красоту одновременного снятия/установки, команд несколько. 

У RISC-V от WCH такой же механизм, с регистром постановки/сброса. Но необходимость в промежуточном регистре, убивает возможность сброса бита порта из прерывания без сохранения контекста, хотя бы из этого, единственного регистра.

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