Прежде всего неплохо бы указать МК, если в Classic/Tiny/Mega TWI более или менее совместим, то же самое не относится к Xmega.
twi_status = (TWSR & (~ ( (1<<1) | (1<<0) ) ) );
Технически правильно, но есть вполне справедливое замечание входящее в десятку заповедей программиста любого урповня - никаких констант в коде. В итоге:
- Код: Выделить всё • Развернуть
twi_status = (TWSR & (~ ( (1 << TWPS1) | (1 << TWPS0) ) ) );
Либо через макрос:
- Код: Выделить всё • Развернуть
#define TWI_GetStatus() (TWSR & 0xF8) //0xF8 - TWS7..TWS3