Предлагаю по аналогии с viewtopic.php?f=20&t=64022 скидывать наработки сюда. Блин, нужна чья-то помощь. Есть у кого код для Иара? А то свой написал, проверил 100500 раз, а ни на один байт ACK не могу получить. Делал в соответствии со спецификацией, проверял.
_________________ Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
//####################################################################################################################### //# //# ФУНКЦИИ РАБОТЫ С ЧАСАМИ DS1307 //# //#######################################################################################################################
//ФУНКЦИЯ ЧТЕНИЯ БЛОКА ДАННЫХ ИЗ МИКРОСХЕМЫ ЧАСОВ DS1307 //чтение происходит в глобальный массив ClockData[7] //последовательность данных - [0]секунды, [1]минуты, [2]часы, [3]день, [4]дата, [5]месяц, [6]год void IICClockReadData (void) { IICStart(); IICByteWrite (0xD0);//запись данных в DS1307 IICByteWrite (0x00);//сбросить указатель адреса DS1307 на 0
IICStart(); IICByteWrite (0xD1);//команда на чтение данных
char temp = IICByteRead (0);//читсем секунды с выдачей подтверждения (0) if (temp != ClockData[0]){ ClockData[0]= temp;
char* pClockData =&ClockData[1];//указатель на данные часов for (char i = 0; i<5; i++) *pClockData++= IICByteRead (0);//пишем, минуты, часы, день, дата, месяц (с выдачей подтверждением) *pClockData = IICByteRead (1);//пишем год (без подтверждения) IICStop(); }
//ФУНКЦИЯ ЗАПИСИ БЛОКА ДАННЫХ В МИКРОСХЕМУ ЧАСОВ DS1307 //запись происходит из глобального массива ClockData[7] //последовательность данных - [0]секунды, [1]минуты, [2]часы, [3]день, [4]дата, [5]месяц, [6]год void IICClockWriteData (void) { IICStart(); IICByteWrite (0xD0);//запись данных в DS1307 IICByteWrite (0x00);//сбросить указатель адреса DS1307 на 0
for (unsigned char i = 0; i<7; i++) IICByteWrite (ClockData [i]);//пишем, секунды, минуты, часы, день, дата, месяц, год
IICStop(); }
А вот софтовая реализация I2C. Заморочек меньше чем с аппаратной, да и цеплять можно на любые выводы контроллера
Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.
Что привлекает в SiC по сравнению с кремнием, и какие особенности делают компоненты SiC часто используемыми, несмотря на более высокую стоимость в сравнении с кремниевыми высоковольтными устройствами? – Объясняет специалист ведущего разработчика силовых приборов из карбида кремния, компании Infineon.
Еще требуется инициализация микросхемы. rtc_init(0, 0, 0); // при первом запуске DS1307 его регистры не установлены (ручками установим их - биты: rs=0, sqwe=0, out=0) Кажется rs обязательно надо в 0 установить. Давно разбирался. Теперь пользуюсь готовым куском и не парюсь. Но все в CV.
Pika4u - по-моему у Вас ошибка в среднем блоке функции i2c_stop() и комментарии там везде неправильные. Если это не поможет, дайте код обрашения к DS1307 с указанием ее I2C адреса (может он неправильный в программе?) Получаете-ли ACK после отсылки адреса по I2C? Если ДА, то на каком этапе коммуникации с DS получаете NACK?
Итак, добил я все же эту ds1307,посадил ей 3 вывод(батарея) на землю и вышеизложенный код заработал. Но вот в чем трабла-смотрю на дисплее результаты отправки байтов-случайным образом, бывает, ACK не приходит.В случае получения NACK, нужно байт отправить ещё раз?
_________________ Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Как все запущено оказалось... А полазить по сайтам производителей часиков и почитать рекомендации по применению ? Да и правила по обычным микрухам пока не отменялись! Вот на всяк случай манька по PCFам - типовые решения все одинаковые:
А вот так выглядит мое решение макетки часиков на DS1307 как отдельного узла (под схему с акумулятором или ионистором - при литиевой батарее цепочка заряда не ставится!):
Спасибо огромное) просто у меня сейчас отладочная плата на меге8(сделал сам, все по минимуму, разводка питания и все выводы выведены на штыри. Так вот, на плате мега8, дс1307, дс18б20, и жк-дисплей. Все питается от программатора(юсб,5В). Я думал, что конденсатора меги, керамики 18б20 и конденсатора в программаторе хватит... Не хватило)
_________________ Steve Jobs. 1955-2011. Мы помним, как ты преобразовал наш мир....
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения