Страница 1 из 1

DS1307 как запустить ?

Добавлено: 17.02.2024{, 06:08}
fefar51702
уже год как часы не работают
кто нибудь разобрался как исправить код чтобы они заработали
после заливки показывают 00:00:80 и стоят на месте
IMG_20240217_100527.jpg

DS1307 как запустить ?

Добавлено: 17.02.2024{, 06:16}
sava74
Обычно с ними проблем нету.
Проект хотелось бы увидеть для начала.

DS1307 как запустить ?

Добавлено: 17.02.2024{, 06:28}
fefar51702
дело не в проекте а в совтовом блоке

2024-02-17_102706.png

DS1307 как запустить ?

Добавлено: 17.02.2024{, 06:32}
sava74
В восьмой версии новые библиотеки, там походу косяк есть
попробуй в версии FLProg 7.5.2

DS1307 как запустить ?

Добавлено: 17.02.2024{, 06:50}
fefar51702
не какая то хрень не ведомая
я уже и билиотеку по откатывал до версии 1,14
и флпрог запустил 7,3,8
бесполезно

DS1307 как запустить ?

Добавлено: 17.02.2024{, 07:04}
montirovka
Так а проект можно увидеть? Почему 80 секунд ? Шину I2C сканировали? Адрес 1307 и модуля с 24С32 виден? Как правило осмотр платы с увеличителем позволяет выявить более быстро неисправность. Плата DS1307 c 24C32? Батарейку меняли? Ноги кварцевого резонатора в норме? Квары бывает выходят из строя. Тараканы ни чего не съели ( не накакали)? Может просто платка вышла из строя?
P.S. Адрес часов 0х68, адрес EEPROM 0х50.

DS1307 как запустить ?

Добавлено: 17.02.2024{, 08:51}
fefar51702
с адресами нормально всё
2024-02-17_124655.png
дело не в модуле
у меня и обычная расыпуха 1307 припаяная к есп не запускается так же нехочет

DS1307 как запустить ?

Добавлено: 17.02.2024{, 08:56}
montirovka
Допытался что ESP. А где проект?

DS1307 как запустить ?

Добавлено: 17.02.2024{, 09:01}
sava74
fefar51702, пришли скетч что в IDE компилируется, посмотрим что там.

DS1307 как запустить ?

Добавлено: 17.02.2024{, 09:26}
montirovka
Так где инкубатор с часами? А почему UNO?
2024-02-17_09-24-58.png

DS1307 как запустить ?

Добавлено: 17.02.2024{, 10:09}
rw6cm
fefar51702 писал(а):
17.02.2024{, 06:08}
после заливки показывают 00:00:80 и стоят на месте
Похоже часы не настроены.
Запишите в часы правдоподобные данные, и все должно работать
2024_02_17_10_08_39_FLProg_8.2.3.png
2024_02_17_10_08_39_FLProg_8.2.3.png (5.8 КБ) 634 просмотра

DS1307 как запустить ?

Добавлено: 18.02.2024{, 04:36}
fefar51702
учитывая что есть вопросы то блок не кто не проверял вчера
а учитывая что прошол уже почти год то блоком никто и не пользуется

montirovka, дело не в проекте если сам блок не работает
я же скинул скрин где только блок и уарт с ним что бы не было потом вопросов по якобы конфликту блоков
про ЕСП я писал что и на ней тоже блок не работает как и на ардуино

rw6cm, это не правельное размышление ибо все часы стартуют после заливки с 00:00:00
будь то 3231 1302 1307 либо системные часы на мк

я залил пример из библиотеки и всё работает
СпойлерПоказать

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

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include "RTClib.h"

RTC_DS1307 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () {
  Serial.begin(57600);

#ifndef ESP8266
  while (!Serial); // wait for serial port to connect. Needed for native USB
#endif

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    while (1) delay(10);
  }

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running, let's set the time!");
    // When time needs to be set on a new device, or after a power loss, the
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

  // When time needs to be re-set on a previously configured device, the
  // following line sets the RTC to the date & time this sketch was compiled
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  // This line sets the RTC with an explicit date & time, for example to set
  // January 21, 2014 at 3am you would call:
  // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}

void loop () {
    DateTime now = rtc.now();

    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");

    // calculate a date which is 7 days, 12 hours, 30 minutes, and 6 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));

    Serial.print(" now + 7d + 12h + 30m + 6s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();

    Serial.println();
    delay(3000);
}
2024-02-18_082442.png
а вот из флпрога запуск не работает
СпойлерПоказать

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

#include <Wire.h>
#include "flprogUtilites.h"
struct _I2CRealRimeClockTime
{
    byte seconds = 0;
    byte minutes = 0;
    byte Hours = 0;
    byte weekday = 0;
    byte day = 0;
    byte month = 0;
    byte year = 0;
    unsigned long startTime = 0;
}
;
_I2CRealRimeClockTime _RTC1;
String _RTC1_GetTime1_StrOut;
unsigned long _stou1 = 0UL;
void setup()
{
    Wire.begin();
    delay(10);
    Wire.beginTransmission(68);
    Wire.write(0x0E);
    Wire.write(B00000000);
    Wire.write(B10001000);
    Wire.endTransmission();
    _RTC1.startTime = millis() - 1000;
    _startUart0();
    _stou1 = millis();
}
void loop()
{
    //Плата:1
    get3231Date(0x68, &_RTC1);
    _RTC1_GetTime1_StrOut = (_convertRealTimeClockNumberToString(_RTC1.Hours))+
    String(":")+
    (_convertRealTimeClockNumberToString(_RTC1.minutes))+
    String(":")+
    (_convertRealTimeClockNumberToString(_RTC1.seconds));
    if (!(0))
    {
         if (flprog::isTimer(_stou1, 1000)) 
        {
            Serial.println(_RTC1_GetTime1_StrOut);
            _stou1 = millis();
        }
    }
     else 
    {
        _stou1 = millis();
    }
}
void get3231Date(int addres, struct _I2CRealRimeClockTime *timeStruct)
{
    if (!(flprog::isTimer ((timeStruct ->startTime), 250))) 
    {
        return;
    }
    Wire.beginTransmission(addres);
    Wire.write(0x00);
    Wire.endTransmission();
    Wire.requestFrom(addres, 7);
    if (Wire.available()) 
    {
        byte  seconds = Wire.read();
        byte minutes = Wire.read();
        byte hours   = Wire.read();
        byte day     = Wire.read();
        byte date    = Wire.read();
        byte month   = Wire.read();
        byte year    = Wire.read();
        timeStruct -> seconds = (((seconds & B11110000) >> 4) * 10 + (seconds & B00001111));
        timeStruct -> minutes = (((minutes & B11110000) >> 4) * 10 + (minutes & B00001111));
        timeStruct -> Hours = (((hours & B00110000) >> 4) * 10 + (hours & B00001111));
        timeStruct -> weekday = (day & B00000111);
        timeStruct -> day    = (((date & B00110000) >> 4) * 10 + (date & B00001111));
        timeStruct -> month   = (((month & B00010000) >> 4) * 10 + (month & B00001111));
        timeStruct -> year    = (((year & B11110000) >> 4) * 10 + (year & B00001111));
    }
     timeStruct ->startTime = millis();
}
String _convertRealTimeClockNumberToString(byte value)
{
    if (value > 9) 
    {
        return String(value, DEC);
    }
    return (String("0") + String(value, DEC));
}
void _startUart0()
{
    int code= 6;
    Serial.begin(9600, (flprog::serialModeFromInt(code)));
}
но что скопировать из примера в флпрог я не понимаю что бы оно тоже заработало

DS1307 как запустить ?

Добавлено: 18.02.2024{, 09:02}
rw6cm
fefar51702 писал(а):
18.02.2024{, 04:36}
rw6cm, это не правельное размышление ибо все часы стартуют после заливки с 00:00:00
будь то 3231 1302 1307 либо системные часы на мк
я не размышляю, а говорю как есть. флпрог не использует библиотеки для часов.
и по факту если часы 1307 сбросить (поменять батарейку или вообще без нее) то часы не запустятся,
будут секунды на 80., пока не введешь в них адекватные данные. С 3231 такого нет, они стартуют с 0.

DS1307 как запустить ?

Добавлено: 18.02.2024{, 09:54}
montirovka
fefar51702, проверьте, это работает? Если работает то фото можно что у вас на экране 1601.
DS3231 и без батарейки работает.
часы.jpg
часы.jpg (4.54 КБ) 505 просмотров

DS1307 как запустить ?

Добавлено: 18.02.2024{, 10:14}
rw6cm
montirovka,
Речь конкретно про 1307. С 3231 нет проблем.
Скорей всего есть нюансы между этими часами, а флп использует один и тот же код для них.

DS1307 как запустить ?

Добавлено: 18.02.2024{, 10:25}
montirovka
В FLProg ткните 1307. Неужели сложно? Или ошибка выскакивает?
Ниже под DS1307.

DS1307 как запустить ?

Добавлено: 18.02.2024{, 10:49}
rw6cm
montirovka писал(а):
18.02.2024{, 10:25}
Неужели сложно? Или ошибка выскакивает?
Если добавить настройку секунд к вашему проекту (то что предлагал постами выше),
то часы начнут нормально работать.
а так:
IMG_6972.JPG
По факту достаточно установка только секунд в 0, чтобы они стали нормально работать

DS1307 как запустить ?

Добавлено: 18.02.2024{, 11:50}
OLGA
может поможет.

DS1307 как запустить ?

Добавлено: 18.02.2024{, 12:38}
rw6cm
fefar51702,
Можно один раз сбросить секунды и они работают без проблем до замены батарейки или нештатного глюка
Как вариант можно один раз при включении питания проверять не больше ли 60 значение секунд,
если больше сбрасывать на ноль. тогда можно не беспокоится о батарейке.
2024_02_18indow.png
2024_02_18indow.png (8.57 КБ) 427 просмотров

DS1307 как запустить ?

Добавлено: 18.02.2024{, 20:18}
fefar51702
кстати да после загрузки 00:00:80
если пнуть установку то начинают тикать от 00:00:00
странно но раньше же они сразу у меня начинали работать от 00:00:00 вроде как иначе я бы заметил что они стоят на месте
или китайцы с батарейкой присылали вставленой не помню уже