Отправлено
xanoy 22 декабря 2006 г. 12:37
В ответ на: Ответ: отправлено
msp43 29 мая 2006 г. 13:09
Причина в строках : ............ ...... .......... I2CTCTL |= I2CSTP; while ((I2CTCTL & I2CSTP) == 0x02); // Wait for Stop Condition U0CTL |= MST; I2CTCTL |= I2CSTT+I2CTRX+I2CRM; // Initiate transfer .............. ........ ........ Проблема заключается в том что программа дает команду выставить стоп условие на шину. И ждет успешной установки стоп условия (проверка бита I2CSTP). После чего сразу же инециализирует новую передачу данных. Но программа не проверяет флаг I2CBUSY или ARDYIFG (с данным флагом не игрался, предпочел I2CBUSY), и могут произойти не предсказуемый результат (у меня просто шла генерация сигнала на шине SCL после повторной пересылке байта.) Так что лутше анализировать флаг I2CBUSY.