Данные-то передаются и принимаются без проблем (прерывание - обработал данные - сбросил TWINT, всё как часы). Проблема начинается, когда мастер передаёт сигнал СТОП. Слейв генерирует прерывание от TWI, идёт по ветке TWSR==0xA0 и, само собой, сбрасывает TWINT.