Не идут синхроимпульсы через TWCK.
Сконфигурировал аппаратный TWI по даташит, пытаюсь записать байт, если выполнить пошагово в отладчике, то после AT91C_BASE_TWI->TWI_THR = data; обмен идет нормально.
Если выполнять код без остановки, то проходят 2 - 3 синхроимпульса, потом на порту устанавливается единица, причем процесс носит случайный характер, может застрять в 0 или 1, также варьируется количество синхроимпульсов.
Даже не знаю в какую сторону копать , ПулАП установлен 2,5кОм.
Если поставить останов на while, обмен также идет нормально, если после while, опять начинается ерунда, как будто процессор мешает работе модуля TWI, если ядро остановить отладчиком, то все нормально.
AT91C_BASE_TWI->TWI_THR = data;
while(!(AT91C_BASE_TWI->TWI_SR & AT91C_TWI_TXCOMP));
return;