Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ: Будте поосторожней с этим кодом

Отправлено 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.

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 


Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru