Добрый день! Имеется модуль часов на DS1302 и arduino nano. Собираю все по схеме данного проекта с теми же прошивками, модуль там такой же https://voltiq.ru/ds1302-rtc-and-arduino/ Время устанавливается корректно. Во время считывания монитор порта выводит данные с часов каждую секунду, но фактически изменение секунды на часах происходит раз в 20 секунд. Использование других библиотек, подключение к другим пинам ситуацию не меняет. Получается, что модуль отсчитывает время в примерно 20 раз медленее, чем нужно, в том числе и при питании от батареи. Кварц перепаивал на другой, ничего не меняется. В чем может быть проблема?
Не меняется. Доработал стандартный библиотечный скетч для наглядности. Подозреваю, что дело в кривости самой микросхемы, но другой нет в наличии, чтобы воткнуть проверить. Код (C++): #include <iarduino_RTC.h> // Подключаем библиотеку iarduino_RTC для работы с модулями реального времени. iarduino_RTC time(RTC_DS1302, 3, 4, 5); // Объявляем объект time для работы с RTC модулем на базе чипа DS1302, указывая выводы Arduino подключённые к выводам модуля RST, CLK, DAT // iarduino_RTC time(RTC_DS1307); // Объявляем объект time для работы с RTC модулем на базе чипа DS1307, используется аппаратная шина I2C // iarduino_RTC time(RTC_DS3231); // Объявляем объект time для работы с RTC модулем на базе чипа DS3231, используется аппаратная шина I2C unsigned long facttime; // void setup(){ // delay(300); // Ждем готовности модуля отвечать на запросы Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бод. time.begin(); // Инициируем работу с модулем. time.settime(0,51,21,27,10,15,2); // Записываем время в модуль: 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник. } // void loop(){ // if(millis()%10000==0){ // Если прошло 10 секунд. Serial.print(time.gettime("d-m-Y, H:i:s, D")); // Выводим время. Serial.print(" FactTime: "); facttime = millis()/1000; //фактическое время после запуска Serial.println(facttime); delay(1); // Приостанавливаем скетч на 1 мс, чтоб не выводить время несколько раз за 1мс. } // }