Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Четверг
28 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Микроконтроллеры
554432
Топик полностью
Скрипач
, пророк
(20.10.2014 12:06 - 12:10, просмотров: 141)
ответил
Dingo
на
Чего-то после выходных не включусь.. Порт ATOMIC_BLOCK из AVR-LIBC.
Суть трюка - код в третьей секции параметров "for" выполняется после блока "for". Перепишите без мистики
for(uint8_t save_SREG = SREG, di(); save_SREG != 0; SREG= save_SREG, save_SREG = 0){...
... но не любой ценой.
Ответить
Это что, если в SREG изначально был 0 то критическая сексия вообще не выполнится? Неплохой трюк))
-
Petrovich
(20.10.2014 12:47
,
)
Скрипач в главном прав - часть кода выполниться на месте закрывающих скобок. но это уже и сам к этому моменту допёр. Однако - всё равно спасибо.
Dingo
(48 знак., 20.10.2014 12:49
)
С учетом того, что SREG никогда не бывает==255, можно так: #define CRITICAL_SEXTION char save_irq=SREG;_CLI(); for(;(char)(~save_irq);SREG=save_irq,save_irq=0xff)
-
Petrovich
(20.10.2014 15:35
,
)
Не выйдет-с. Чуть ниже: ->
-
Dingo
(20.10.2014 12:20
,
ссылка
)