Программный I2C

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Родился
Аватара пользователя
Сообщения: 8
Зарегистрирован: Пт апр 25, 2014 10:21:54

Сообщение Demetros »

Спасибо большое за ответы! Сейчас внимательно ознакомлюсь с документацией, перепишу прогу и отпишусь о результате.
Реклама
Родился
Аватара пользователя
Сообщения: 8
Зарегистрирован: Пт апр 25, 2014 10:21:54

Сообщение Demetros »

Доброго времени суток. Сори, что долго не отвечал, был оч. занят. В общем как и обещал, пишу о результате. Все получилось, натолкнули на мысль по "защелкам", за что огромное спасибо. Сначала я долго мучился с реализацией Reed-modify-write, но кроме как ругательств компилятора (only lvalues may be assigned to or modified) ничего не получил. (пытался в define прописать что-то типа TRISC=TRISC|(1<<7). Ответ частично нашел при курении даташита (спасибо за ссылки) и еще нашел очень толковую статью по этому поводу (http://picdevices.ru/osnovyi-osnov/osto ... helki.html). А решение такое: перед операцией TRIS вписать в порт "0" в процедуре Старт и Стоп.

Код: Выделить всё

void i2c_start(void)  //условие Старт I2C
{
SCL = 1;
SDA = 1;
i2c_dly();
GIE=0;
SDA_IN=0;
SDA = 0;
i2c_dly();
SCL_IN=0;
SCL = 0;
GIE=1;
}
Спасибо всем за помощь! Если вдруг кому-то пригодится, выкладываю исправленный проект.
Вложения
DS1307_2.rar
(165.02 КБ) 236 скачиваний
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Demetros писал(а):А решение такое: перед операцией TRIS вписать в порт "0"
Аlex писал(а):А как Вы думаете, после перенаправления бита порта, что будет находится в защёлке ? Откуда такая уверенность, что там будет то, что у Вас на уме ?
Подсказка о решении была уже полмесяца назад :)
Родился
Аватара пользователя
Сообщения: 8
Зарегистрирован: Пт апр 25, 2014 10:21:54

Сообщение Demetros »

Поэтому и благодарю за помощь, Аlex, сам бы точно не догадался бы. Спасибо! Я в программировании микроконтроллеров (да и вообще в программировании) стою на самом низу пищевой цепочки :))) , поэтому даже очевидные подсказки воспринемаются с большим трудом :oops:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 1
Зарегистрирован: Чт май 19, 2016 08:52:46

Сообщение MIKOLA2016 »

Всем привет! Подскажите почему не записываются данные в DS1307. Компилирую в MPLAB X IDE v3.30. В железе пока не проверял, экспериментирую в протеусе. Использую аппаратный I2C, может в протеусе он не реализован? Или все таки лучше использовать программный I2C? Прога написана на Си, всё во вложении.
Вложения
PIC16F876A.rar
(51.33 КБ) 222 скачивания
Реклама
Ответить

Вернуться в «PIC»