Testing the example code TimeTeensy3; the initialization and time display works well. The serial port is returning the system time with a few seconds delay, presumably due to the compiling time. However, when I want to adjust the RTC time, either by using the serial command "t1634734422" or adding this in the loop:
It still returns the system time and nothing is changed. Could you please point out what is wrong or give me an example code for setting the RTC time? Thanks!
Complete Source Code (or a link to the code)
Which PJRC product you're using
Time/TimeTeensy3.pde
Part numbers of any other chips or modules + links to their info
CFS-20635768 crystal, Teensy3.2
Wiring details - how exactly have you connected the hardware (a photo's worth 1000 words)
MicroUSB and crystal only
Software setup, Arduino vs C+makefile, running on Windows, Mac or Linux?Versions?
Arduino IDE, Linux
Code:
time_t tt = 1634734422;
Teensy3Clock.set(tt);
setTime(tt);
Complete Source Code (or a link to the code)
Code:
/*
* TimeRTC.pde
* example code illustrating Time library with Real Time Clock.
*
*/
#include <TimeLib.h>
void setup() {
// set the Time library to use Teensy 3.0's RTC to keep time
setSyncProvider(getTeensy3Time);
Serial.begin(9600);
while (!Serial); // Wait for Arduino Serial Monitor to open
delay(100);
if (timeStatus()!= timeSet) {
Serial.println("Unable to sync with the RTC");
} else {
Serial.println("RTC has set the system time");
}
}
void loop() {
if (Serial.available()) {
t = processSyncMessage();
if (t != 0) {
Teensy3Clock.set(t);
// set the RTC
setTime(t);
}
}
time_t tt = 1634734422;
Teensy3Clock.set(tt);
setTime(tt);
digitalClockDisplay();
delay(1000);
}
void digitalClockDisplay() {
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
time_t getTeensy3Time()
{
return Teensy3Clock.get();
}
/* code to process time sync messages from the serial port */
#define TIME_HEADER "T" // Header tag for serial time sync message
unsigned long processSyncMessage() {
unsigned long pctime = 0L;
const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013
if(Serial.find(TIME_HEADER)) {
pctime = Serial.parseInt();
return pctime;
if( pctime < DEFAULT_TIME) { // check the value is a valid time (greater than Jan 1 2013)
pctime = 0L; // return 0 to indicate that the time is not valid
}
}
return pctime;
}
void printDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
Time/TimeTeensy3.pde
Part numbers of any other chips or modules + links to their info
CFS-20635768 crystal, Teensy3.2
Wiring details - how exactly have you connected the hardware (a photo's worth 1000 words)
MicroUSB and crystal only
Software setup, Arduino vs C+makefile, running on Windows, Mac or Linux?Versions?
Arduino IDE, Linux