I don't have my Due yet but I've been reading up on it and improving some of my sketches for use with the Due. In a previous sketch, I defined my own function clock() that displayed a clock on an LCD screen.
I was surprised when I tried to migrate this to the Due because it said there was already a clock function. I haven't been able to find the clock function (must be in the core library somewhere) and I have no idea what it does.
Also I think the Due is supposed to have an on-board (or on-chip?) RTC.
Can anyone provide me with more information regarding the RTC and what the function clock() does? I have no reason to believe these are related, just two curiosities I stumbled upon. It sure would be handy if clock() called returned the time from the RTC!
There is an RTC function in the ARM chip, and the board has a 32.768 kHz crystal. Without battery back-up it isn't a lot of use, though. One could presumably be added on a suitable shield. I don't think there is any RTC software support, yet.
Hi, I was looking for making the due RTC work too, so I tried to do it with some register manipulation but the IDE tells me that the registers are not declared... Since I'm not very good, If someone could take a look at my code I could be nice.
void setup()
{
Serial.begin(9600);
if(RTC_WPMR==B01010010010101000100001100000001) bitSet(RTC_WPMR,0);// dissable Write protection
bitSet(RTC_CR,0); // request time and date update
while(bitRead(RTC_SR,0)!=1) //wait for acknowledge for update
{}
bitSet(RTC_SCCR,0);
RTC_MR=0; //Set hour mode to 24h
RTC_TIMR=B00000000001000110011000000110000;// set time: 23:30:30
bitClear(RTC_CR,0);//exit programing mode
delay(5000);
}
void loop()
{
rtcToTime(RTC_TIMR);
delay(10000);
}
void rtcToTime(int rtcTime)
{
int h=rtcTime>>16;
int m=(rtcTime>>8)&B000000000000000001111111;
int s=rtcTime&B00000000000000000000000001111111;
Serial.print(h);Serial.print(':');Serial.print(m);Serial.print(':');Serial.println(s);
}