Подключение Tiny RTC i2C

lishniy
Offline
Зарегистрирован: 08.05.2013

Доброго времени суток. 

Пытаюсь подключить часики к Arduino. Часики такие:

Библиотеку качал отсюда. Подключаю к Funduino mega. vcc и gnd запитываю от блока питания, scl и sda подключаю к 20 и 21 пину. 

Заливаю стандартный пример

#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
 
void setup () {
  //Initialize the serial port, wire library and RTC module
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();
  //We check if the RTC module is working, if not we sent Error
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    //If we remove the comment from the following line, we will set up the module time and date with the computer one
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}
 
void loop () {
    DateTime now = RTC.now();
    //We print the day
    Serial.print(now.day(), DEC);
    Serial.print('/');
    //We print the month
    Serial.print(now.month(), DEC);
    Serial.print('/');
    //We print the year
    Serial.print(now.year(), DEC);
    Serial.print(' ');
    //We print the hour
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    //We print the minutes
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    //We print the seconds
    Serial.print(now.second(), DEC);
    Serial.println();
    //We check the time and sent through the serial port every 3s
    delay(3000);
}

А на выходе получаю 

RTC is NOT running!
165/165/2165 165:165:85
165/165/2165 165:165:85

Куда копать?

maksim
Offline
Зарегистрирован: 12.02.2012

Копать найденые темы на этом форуме по запросу  "DS1307". Земли у модуля и дуины соединены?

lishniy
Offline
Зарегистрирован: 08.05.2013

Земля соеденена, да и при подключении питания от ардуины, ситуация не меняется. По форуму искал, дельного ничего не нашел.

Upd: Стоило написать, как проблема решилась. Виновником оказалось отволившееся заземление кварца.

ustas
Offline
Зарегистрирован: 12.03.2012

проблемой могла быть еще и отсутствующая резервная батарейка (о ней вы тоже ничего не сказали, кстати)

Alney
Offline
Зарегистрирован: 12.07.2013

 

 

Посмотрите это, может поможет:

 

В качестве эталона таблице ниже показано, где TWI контакты расположены на различных досках Arduino.

 

Доска I2C / TWI контакты
Uno, Ethernet A4 (ПДД), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Леонардо 2 (SDA), 3 (SCL)
Должное 20 (SDA), 21 (SCL), SDA1 , SCL1

Взял здесь:   http://arduino.cc/en/Reference/Wire

teodor4ik
Offline
Зарегистрирован: 04.11.2013

Кто в курсе, батарейка в модуле была очень уставшей (0.8В), поменял. Без нагрузки 3.5В, не вопрос. На пине ВАТ уже 2В. Соответственно идет пока есть электрика (или до ресета). Далее отлетает на 09:00:00 Это батарейке конец или часам, что так просаживают?

ПыСы. Корпус кварца не припаян к земле как и у автора темы, но часы идут.

либы отсюда http://www.freetronics.com/pages/rtc-real-time-clock-module-quickstart-guide

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

дак и будут идти, но не точно.

teodor4ik
Offline
Зарегистрирован: 04.11.2013

Померял сегодня 3.45В и 1.91В соответственно. Не может же быть столь хреновая батарейка? или модуль и правда столько жрет?

mkvmaks
Offline
Зарегистрирован: 07.07.2013

Может поможет:

 

"Этот модуль делал странный человек. 

Смотрим схематику: http://arduino-ua.com/docs/TinyRTCV11_sch.pdf
В него встроена цепь подзарядки, которая 5ю вольтами подзаряжает батарейку. Но чтобы не спалить вход Vbatt у DS1307, стоит резистивный делитель на 1:1,47. Поэтому если по даташиту DS1307 должна считать время пока на входе есть хотя-бы 2 вольта, то с таким решением она имеет полное право перестать работать при 2,95В на батарейке.
Так что работоспособность батарейки надо проверять не по напряжению на ней, а на контактах 1 (Vbat, после делителя) и 2 (GND)?"

 

А так вот здесь почитайте http://forum.amperka.ru/threads/%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-arduino-uno-rtc-ds1307.3085/

 

 

teodor4ik
Offline
Зарегистрирован: 04.11.2013

Так и пишу, что при 3.5 на батарейке, на Vbat 2... Сегодня уже 3.3 и 1.85... ну не может же он так жрать по даташиту. При чем и не работая то по сути.

 

ёкарный бабай... Там, если не врут, то что в комплекте, это аккум ли-ион. Теперь вопрос, а как его заряжать? Vbat на +5 посадить? Я его случайно не выкинул. Вопрос отпал, заряжается от Vcc.

_shyreg_
Offline
Зарегистрирован: 10.03.2015

Пытаюсь подключить данный модуль к контроллеру, код к торому пишу на microC. Получается косяк с I2C: записываю данные в один из регистров DS1307 и потом пытаюсь прочитать с него , но этот регистр оказывается пустой. В чем проблема? 

void main()  {
  PORTB = 0;
  TRISB = 0;
  PORTA = 0;
  TRISA = 0;
 
 
 
while(1)  {
                 delay_ms(500);
                 PORTA.F0 = 1;
 
                 I2C1_Init(9600);
                 if (I2C1_Is_Idle())
                    {
                     I2C1_Start();
                     I2C1_Wr(0xD0);
                     I2C1_Wr(0x08);
                     I2C1_Wr(0xFF);
                     I2C1_Stop();
 
                     Delay_ms(100);
 
                     I2C1_Start();
                     I2C1_Wr(0xD0);
                     I2C1_Wr(0x08);
                     I2C1_Repeated_Start();
                     I2C1_Wr(0xD1);
                     PORTB = I2C1_Rd(0);
                     I2C1_Stop();
 
                     delay_ms(500);
                     PORTA.F0 = 0;
 
                     }
          }
             }
PaulIV
Offline
Зарегистрирован: 11.10.2015
 
Такие цифры наблюдал, когда перепутал провода SCL SDA
1 RTC is NOT running!
2 165/165/2165 165:165:85
3 165/165/2165 165:165:85

 

slider
Offline
Зарегистрирован: 17.06.2014

попробуйте сначала применить скетч с установкой времени. а потом уж со считыванием. Гдето тож этот модуль не выходил на связь. пока ему дату сначала не прописал (при этом запускается время.