Цитата(alt3857 @ Mar 10 2012, 09:01)

Привет. Возникли сомнения по поводу атомарности операции bit-banding. Во всех доках пишут, что данная операция обеспечивает атомарный доступ к битам периферии и RAM, но
компилятор Keil генерирует три инструкции:
MOV r0,#0x01
LDR r1,[pc,#28] ; @0x000012D4
STR r0,[r1,#0x64]
А если между ними произойдет прерывание?
Ничего страшного не произойдёт, т.к модификация бита происходит атомарно за одну инструкцию STR.
В отличие от
Код
ldr r1, [r2]
orr r1,#1
str r1, [r2]
где возникшее после первой или второй инструкции прерывание может потерять результаты своего изменения ячейки памяти по адресу [r2] из-за того что она (ячейка) была закеширована в r1 во время выполнения прерывания.