Программный I2C
- Сообщения: 8
- Зарегистрирован: Пт апр 25, 2014 10:21:54
Спасибо большое за ответы! Сейчас внимательно ознакомлюсь с документацией, перепишу прогу и отпишусь о результате.
- Реклама
- Сообщения: 8
- Зарегистрирован: Пт апр 25, 2014 10:21:54
Доброго времени суток. Сори, что долго не отвечал, был оч. занят. В общем как и обещал, пишу о результате. Все получилось, натолкнули на мысль по "защелкам", за что огромное спасибо. Сначала я долго мучился с реализацией 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 КБ) 237 скачиваний
Demetros писал(а):А решение такое: перед операцией TRIS вписать в порт "0"
Подсказка о решении была уже полмесяца назадАlex писал(а):А как Вы думаете, после перенаправления бита порта, что будет находится в защёлке ? Откуда такая уверенность, что там будет то, что у Вас на уме ?
- Сообщения: 8
- Зарегистрирован: Пт апр 25, 2014 10:21:54
Поэтому и благодарю за помощь, Аlex, сам бы точно не догадался бы. Спасибо! Я в программировании микроконтроллеров (да и вообще в программировании) стою на самом низу пищевой цепочки
, поэтому даже очевидные подсказки воспринемаются с большим трудом 
- Сообщения: 1
- Зарегистрирован: Чт май 19, 2016 08:52:46
Всем привет! Подскажите почему не записываются данные в DS1307. Компилирую в MPLAB X IDE v3.30. В железе пока не проверял, экспериментирую в протеусе. Использую аппаратный I2C, может в протеусе он не реализован? Или все таки лучше использовать программный I2C? Прога написана на Си, всё во вложении.
- Вложения
-
- PIC16F876A.rar
- (51.33 КБ) 222 скачивания
- Реклама

