Go Down

Topic: Due and Built in RTC? Anyone Know About clock() ? (Read 2185 times) previous topic - next topic


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!

Leon Heller

Jan 17, 2013, 06:33 pm Last Edit: Jan 17, 2013, 06:38 pm by Leon Heller Reason: 1
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.
Leon Heller


Is it possible to solder a battery directly into the board? Is there room for it. I mean a small battery just for the clock.


Hmm ... this could be very useful for my application. I will have to do more research, it seems.


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.
Code: [Select]

void setup()
  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
  RTC_MR=0; //Set hour mode to 24h
  RTC_TIMR=B00000000001000110011000000110000;// set time: 23:30:30
  bitClear(RTC_CR,0);//exit programing mode
void loop()
void rtcToTime(int rtcTime)
  int h=rtcTime>>16;
  int m=(rtcTime>>8)&B000000000000000001111111;
  int s=rtcTime&B00000000000000000000000001111111;

Thanks :)



Don't know if it will help, but there are RTC register definitions buried deep in the folder tree at e.g.:

   ... \arduino-1.5.1r2\hardware\arduino\sam\system\CMSIS\Device\ATMEL\sam3xa\include\component

Look for files component_rtc.h and instance_rtc.h (there are multiple versions in the tree under the ATMEL folder).



Thank's I checked that and it was what I needed :)

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131