Здравствуйте. В поиске подобной проблемы не нашел, потому вот... В общем, есть arduino uno и пара модулей RTC на чипе DS1302, с обоими такая ситуация, что каждую вторую секунду выводится некорректное время. Например ниже вывод с Serial порта с задержкой на вывод 1 строки в delay(250); Спойлер: вывод serial: Код (C++): 2015 12 15 14:55:1 2015 12 15 14:55:1 2015 12 15 14:55:1 2015 12 15 14:55:1 2010 89 10 10:30:1 2010 89 10 10:30:1 2010 89 10 10:30:1 2010 89 10 10:30:1 2015 12 15 14:55:3 2015 12 15 14:55:3 2015 12 15 14:55:3 2015 12 15 14:55:3 2010 89 10 10:30:2 2010 89 10 10:30:2 2010 89 10 10:30:2 2010 89 10 10:30:2 2015 12 15 14:55:5 2015 12 15 14:55:5 2015 12 15 14:55:5 2015 12 15 14:55:5 2010 89 10 10:30:3 2010 89 10 10:30:3 2010 89 10 10:30:3 2010 89 10 10:30:3 Соотв. 2010 89 10 10:30:1 - 89ый месяц, понятно что дата некорректная. При этом время идет нормально, если отключать питание uno , часы продолжают работать на батарейке дальше. Библиотеку кажется брал отсюда https://github.com/msparks/arduino-ds1302 Весь код скетча ниже, закомментил то как выставлял время, подскажите пожалуйста куда копать ? Код (C++): #include <stdio.h> #include <DS1302.h> namespace { const int kCePin = 5; // Chip Enable const int kIoPin = 6; // Input/Output const int kSclkPin = 7; // Serial Clock DS1302 rtc(kCePin, kIoPin, kSclkPin); } void setup(void) { Serial.begin(9600); //rtc.writeProtect(false); // rtc.halt(false); //Time t(2015, 12, 15, 14, 11, 50, Time::kTuesday); // Set the time and date on the chip. // rtc.time(t); pinMode(2, OUTPUT); } void loop(void) { Time t = rtc.time(); Serial.print(t.yr); Serial.print(" "); Serial.print(t.mon); Serial.print(" "); Serial.print(t.date); Serial.print(" "); Serial.print(t.hr); Serial.print(":"); Serial.print(t.min); Serial.print(":"); Serial.println(t.sec); delay(250); }
А на каком контакте должен быть резистор? Хотя у меня проблемма другого плана, каждую четную секунду, секунды отображаются в виде двух нулей. Код отсюда http://lesson.iarduino.ru/page/podk...lnogo-vremeni-ds1302-ds1307-ds3231-k-arduino/ Попробовал 1307, вроде все работало, а потом хлоп, и перестало считать время 01-10-2015, 15:20:17, Thu 01-10-2015, 15:20:18, Thu 01-10-2015, 15:20:19, Thu 01-10-2015, 15:20:20, Thu 01-10-2015, 15:20:21, Thu 01-10-2015, 15:20:22, Thu 01-01-2001, 01:01:01, Mon 01-01-2001, 01:01:01, Mon 01-01-2001, 01:01:01, Mon 01-01-2001, 01:01:01, Mon 01-01-2001, 01:01:01, Mon И вот так оно будет до упора гнать одно и то же
Сборку оставил на работе, сделал поливалку для цветов на время отпуска, вроде работает как надо) Если не изменяет склероз, резистор поставил на gnd пине. Где то в инете просто увидел комментарий, что помогает стабилизировать питание. По поводу "01-01-2001, 01:01:01, Mon" - у меня такое было когда отходил какой-либо из пинов CLK\RST\DAT.
Спасибо! Действительно, с резистором заработало (нужно погонять еще). Не понимаю в чем прикол, но я бы съел б свою шляпу, но не поверил бы в такое. Более того, если резистор во время работы замкнуть, на экран идет всякий бред, вроде меняющегося года каждую секунду, но при этом реальное время не сбивается!