Ну тут вообще сантиметров тридцать... Есть предложение перед меткой i2c_get_ack_wait вставить задержку на распространение сигнала. не ту, что полтакта I2C, а такую... на десятка три тактов.
Понятно же, что работает во многих изделиях... причём на 400 кГц аппаратной тактовой I2C. Да, пытался поднимать - наинает тормозить (переповторы идут).