ещё раз спасибо, сейчас попробую ещё, хотя стереть получилось. На дисплее прибора год стал выводиться ??16, попробую сейчас прочитать. Насчёт батарейки- я питание прибора не отключаю, в нём встроенные часы, на питании вместо батарейки стоит, как мне сказали, ионистор, а также в приборе автономное питание 6 батареек.
Помогите идиоту :) Ковыряюсь с DS1307. Собираю для себя небольшую метеостанцию... Несколько часов назад проверял все элементы (BMP180, DS18B20, LCD Nokia 5110, DS1307, Arduino Nano): в почти готовую поделку заливал скетчи для каждого элемента отдельно. Всё работало нормально, в том числе и часы устанавливали и показывали время.
После этого чуток допилил код (вывод инфы на экран) и случилось странное: часы вывели на экран нули и 2000 год. Попытка снова установить на них время провалилась (библиотека DS1307RTC, пример SetTime): в монитор порта стало выводиться "Could not parse info from the compiler, Time=...". Переткнул проводочки, отключил всё, кроме часов, подключил ДРУГОЙ модуль к ДРУГОЙ ардуинке (пробовал и Nano, и Uno) - эффект тот же. Причём перепробовал 3 разных IDE: 1.0.6, 1.6.3 и 1.6.7.
Попробовал пример из библиотеки Time (пример TimeRTC). В мониторе порта получаю "Unable to sync with the RTC". При этом часы точно подключены (I2C-сканер видит 2 адреса при подключении часов).
Комп перезагружал, в бубен стучал. Что ещё надо сделать и что я делаю не так?
Сам себе, идиоту, отвечу. Вся проблема была из-за того, что в примере SetTime решил названия месяцев написать на русском :( Вернул как было - всё заработало.
Все перечитал, но пока не могу найти ответ. Ситуация такая - модуль на ds1307. Стоит батарейка. Убрал резисторы на 3 ногу и зарядку. Часы идут и при подключении питания на arduino uno, и при отключении. Но вот странно, при запросе времени , при подключенной батарейке, выдает пустую дату - тира 01-01-2001 и время 00-00. Но стоит отключить батарейку - время выдает нормальное. Никто не сталкивался с такой бедой? Библиотеки разные пробовал - все аналогично.
Все перечитал, но пока не могу найти ответ. Ситуация такая - модуль на ds1307. Стоит батарейка. Убрал резисторы на 3 ногу и зарядку. Часы идут и при подключении питания на arduino uno, и при отключении. Но вот странно, при запросе времени , при подключенной батарейке, выдает пустую дату - тира 01-01-2001 и время 00-00. Но стоит отключить батарейку - время выдает нормальное. Никто не сталкивался с такой бедой? Библиотеки разные пробовал - все аналогично.
Какая то хня у вас. При отключенной батарее, 1307 работать вроде не должна.
Батарейка установлена. Подключаю к компу, заливаю программу, в порт пишет 01-01-2001 и время 00-00.
Прямо на ходу , вытаскиваю батарейку, начинает писать в порт нормальные данные. Причем , если отключу от компа с установленной батарейкой, то время продолжает идти. Получается установленная батарейка приводит к некорректному отображению информации. Хрень какая-то.....
DS1307 с буквой Z, может в этом проблема... Может надо принудительно что-то заслать в микросхему?
Сегодня укоротил провода от модуля до ардуино. Не помогло (но я и не думал, что поможет).
Но при тестировании программы, при передергивании батарейки выскочило The DS1307 is stopped.
Это сработало условие RTC.chipPresent(). Может при установленной батарейке - блокируется вывод данных ? Повторюсь - часы продолжают идти, когда стоит батарейка, но убираю питание 5В.
RTC.chipPresent () — возвращает TRUE, если модуль подключен
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println("DS1307RTC Read Test");
Serial.println("-------------------");
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print("Ok, Time = ");
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println("The DS1307 is stopped. Please run the SetTime");
Serial.println("example to initialize the time and begin running.");
Serial.println();
} else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}
Добрый день! Хочу написать небольшую программу и зашить ее в Attiny2313. Столснулся с проблемой: по всем инструкциям (что нашел) модуль DS1307 нужно подключать к аналоговым пинам 4 и 5. Но я не нашел на Attiny2313 есть ли там аналоговые пины. Вопрос в чем: как прописать в скетче настройки для подключения модуля DS1307 к Attiny2313. Распиновку брал здесь: https://github.com/SpenceKonde/ATTinyCore
Не нужны тут аналоговые пины. На пинах A4 и A5 находится шина I2C (SDA, SCL). У Attiny2313 шина I2C также есть, но SDA и SCL на пинах PB5, PB7 (D14, D16).
Уф.. замучился. Перепробовал разные библиотеки - все на ардуино работают, но для Attiny2313 не компилируются. Стандартная библиотека RTClib (и некоторые другие) выдает такую ошибку:
Здравствуйте! Помогите пожалуйста справиться с такой задачкой. Есть у меня плата на ней мк 128 и модуль часов подключенный как на картинке. Это все дело работало и было оно реле защиты ЭД. Я хочу под свои нужды его перешить. На скетче, который я использую, понятное дело, часы не работают. Нужно программно настроить эти два порта как SDA, SDL. Помогите, кто вкурсе как. Код и картинка прилагаются. Еще пожалуйста, объясните мне эту строку: "#define DS1307_I2C_ADDRESS 0x68" - кому присваивается этот адрес?
Dimatkz, в общем ОЗУ этого чипа не любит, когда его читают (и записыват) все 56 байт подряд. Если разделить хотя бы пополам, то всё ок.
Стиралка:
Читалка:
Только я не понял, зачем вам это? Ведь при отключении батарейки всё стирается. А при включении судя по всему заполняется хаотическими данными.
ещё раз спасибо, сейчас попробую ещё, хотя стереть получилось. На дисплее прибора год стал выводиться ??16, попробую сейчас прочитать. Насчёт батарейки- я питание прибора не отключаю, в нём встроенные часы, на питании вместо батарейки стоит, как мне сказали, ионистор, а также в приборе автономное питание 6 батареек.
Так у чипа микропотребление и есть резервное питание
Привет, уважаемые!
Помогите идиоту :) Ковыряюсь с DS1307. Собираю для себя небольшую метеостанцию... Несколько часов назад проверял все элементы (BMP180, DS18B20, LCD Nokia 5110, DS1307, Arduino Nano): в почти готовую поделку заливал скетчи для каждого элемента отдельно. Всё работало нормально, в том числе и часы устанавливали и показывали время.
После этого чуток допилил код (вывод инфы на экран) и случилось странное: часы вывели на экран нули и 2000 год. Попытка снова установить на них время провалилась (библиотека DS1307RTC, пример SetTime): в монитор порта стало выводиться "Could not parse info from the compiler, Time=...". Переткнул проводочки, отключил всё, кроме часов, подключил ДРУГОЙ модуль к ДРУГОЙ ардуинке (пробовал и Nano, и Uno) - эффект тот же. Причём перепробовал 3 разных IDE: 1.0.6, 1.6.3 и 1.6.7.
Попробовал пример из библиотеки Time (пример TimeRTC). В мониторе порта получаю "Unable to sync with the RTC". При этом часы точно подключены (I2C-сканер видит 2 адреса при подключении часов).
Комп перезагружал, в бубен стучал. Что ещё надо сделать и что я делаю не так?
Сам себе, идиоту, отвечу. Вся проблема была из-за того, что в примере SetTime решил названия месяцев написать на русском :( Вернул как было - всё заработало.
кто подскажет в стнадртной либе DS1307 -b почему tm.Wday() всгда возвращает 0 , при том что время и дату возвращают все нормально?
Все перечитал, но пока не могу найти ответ. Ситуация такая - модуль на ds1307. Стоит батарейка. Убрал резисторы на 3 ногу и зарядку. Часы идут и при подключении питания на arduino uno, и при отключении. Но вот странно, при запросе времени , при подключенной батарейке, выдает пустую дату - тира 01-01-2001 и время 00-00. Но стоит отключить батарейку - время выдает нормальное. Никто не сталкивался с такой бедой? Библиотеки разные пробовал - все аналогично.
Все перечитал, но пока не могу найти ответ. Ситуация такая - модуль на ds1307. Стоит батарейка. Убрал резисторы на 3 ногу и зарядку. Часы идут и при подключении питания на arduino uno, и при отключении. Но вот странно, при запросе времени , при подключенной батарейке, выдает пустую дату - тира 01-01-2001 и время 00-00. Но стоит отключить батарейку - время выдает нормальное. Никто не сталкивался с такой бедой? Библиотеки разные пробовал - все аналогично.
Какая то хня у вас. При отключенной батарее, 1307 работать вроде не должна.
Батарейка установлена. Подключаю к компу, заливаю программу, в порт пишет 01-01-2001 и время 00-00.
Прямо на ходу , вытаскиваю батарейку, начинает писать в порт нормальные данные. Причем , если отключу от компа с установленной батарейкой, то время продолжает идти. Получается установленная батарейка приводит к некорректному отображению информации. Хрень какая-то.....
DS1307 с буквой Z, может в этом проблема... Может надо принудительно что-то заслать в микросхему?
asicorp2001, какое напряжение на батарейке, и на питании модуля когда всё подключено?
Какое напряжение на 3-й ноге 1307 (при наличии батарейки) без подключения к USB и с подключением?
На 8 ноге 5в, на 3 ноге 3в. Вроде нет криминала.
Сегодня укоротил провода от модуля до ардуино. Не помогло (но я и не думал, что поможет).
Но при тестировании программы, при передергивании батарейки выскочило The DS1307 is stopped.
Это сработало условие RTC.chipPresent(). Может при установленной батарейке - блокируется вывод данных ? Повторюсь - часы продолжают идти, когда стоит батарейка, но убираю питание 5В.
RTC.chipPresent () — возвращает TRUE, если модуль подключен
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println("DS1307RTC Read Test");
Serial.println("-------------------");
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print("Ok, Time = ");
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println("The DS1307 is stopped. Please run the SetTime");
Serial.println("example to initialize the time and begin running.");
Serial.println();
} else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}
Попробовал порты сканировать , но с батарейкой зависает. Батарейку отключаю - все ок.
I2C Scanner
Scanning...
I2C device found at address 0x50 !
I2C device found at address 0x68 !
done
присоеденюсь к предыдущим ответам.
думаю дело в напряжении питания или в батарейке.
Чудес не бывает..
Вы меряли напряжения на третьей и восьмой ноге? при поданом питании и установленной батарейке.
сколько напряжения на 3 ноге без батарейки?
чем меряете напряжение?
Добрый день! Хочу написать небольшую программу и зашить ее в Attiny2313. Столснулся с проблемой: по всем инструкциям (что нашел) модуль DS1307 нужно подключать к аналоговым пинам 4 и 5. Но я не нашел на Attiny2313 есть ли там аналоговые пины. Вопрос в чем: как прописать в скетче настройки для подключения модуля DS1307 к Attiny2313. Распиновку брал здесь: https://github.com/SpenceKonde/ATTinyCore
Пробовал в скетче прописывать так:
#include <iarduino_RTC.h>
DS1307 rtc(6, 7);
Не нужны тут аналоговые пины. На пинах A4 и A5 находится шина I2C (SDA, SCL). У Attiny2313 шина I2C также есть, но SDA и SCL на пинах PB5, PB7 (D14, D16).
Пробовал в скетче прописывать так:
#include <iarduino_RTC.h>
DS1307 rtc(6, 7);
Уф.. замучился. Перепробовал разные библиотеки - все на ардуино работают, но для Attiny2313 не компилируются. Стандартная библиотека RTClib (и некоторые другие) выдает такую ошибку:
TWBR = ((F_CPU / frequency) - 16) / 2;
Пробовал сделать как в статье: https://forums.adafruit.com/viewtopic.php?f=45&t=83876
заменил #include <Wire.h> на:
#include <USI_TWI_Master.h>
но это не дало результата, выскакивет та же ошибка
Все другие библиотеки пытаются програмно задействовать SPI и там тьма ошибок...