реклама на сайте
подробности

 
 
> PIC16F628A + 24LC512 + HT-PICC + i2c sample, Не проходит стоп-условие
stas00n
сообщение Jan 10 2011, 11:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-11-10
Пользователь №: 61 198



Добрый день, коллеги. Подскажите, что не так я делаю? Имеется PIC16LF628A (мастер) и 24LC512 (слейв); программный i2c из примеров HT-PICC 9.80. Пытаюсь записать один байт по адресу, скажем, 0:
1. Посылаю старт-условие и управляющий байт (0b10100000);
2. Посылаю 2 байта адреса (нули);
3. Посылаю байт данных (например, 0xAA);
4. Посылаю стоп-условие.
Прием байтов (пп. 1-3) слейв подтверждает, затем контроллер генерит стоп-условие, однако память почему-то в это время держит SDA в нуле, поэтому стоп условия не получает. Зациклил для наблюдений такой кусочек кода:
CODE
while(1){
t = i2c_WriteTo(I2C_DEVICE_ADDRESS);
t = i2c_PutByte (0);
t = i2c_PutByte (0);
t = i2c_PutByte (0xAA);
i2c_Stop();
__delay_ms(10);
}

Симуляция в протеусе показывает, что слейв не отпускает SDA:

В реальном железе наблюдаю настоящим осциллографом то же самое. в линиях включены резисторы по 150 Ом, со стороны контроллера "стоповый" импульс примерно 2 В, со стороны памяти совсем маленький...
В даташите процесс записи нарисован так:

Вроде все правильно делаю, а работает неправильно.
Прилагаю модель для протеуса и прошивку, хелп!


Прикрепленные файлы
Прикрепленный файл  dsn_n_hex.zip ( 18.32 килобайт ) Кол-во скачиваний: 18
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 22:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016