Приветствую,

в reference коде TWI интерфейса с atmel.com есть такие строки:

Код
/* Set the TWI Master Mode Register */
pTwi->TWI_MMR =  SlaveAddr | IntAddrSize & ~AT91C_TWI_MREAD;


Компилятор (arm-elf-gcc) предупреждает:

Код
warning: suggest parentheses around arithmetic in operand of |


Понятно, что приоритет & выше чем |, и наверное авторы кода полагались на то, что вычисления будут в таком порядке:
1) ~AT91C_TWI_MREAD
2) IntAddrSize & ~AT91C_TWI_MREAD
3) SlaveAddr | <результат предыдещей операции>

То есть правильно ли будет расставить скобки так:
Код
pTwi->TWI_MMR =  SlaveAddr | (IntAddrSize & ~AT91C_TWI_MREAD);


Из даташита не совсем понятна последовательность. Буду признателен за развеяние сомнений smile.gif