set the rtc

21 Mar 2010

I tried the snippet "set the rtc" and the compiler comes up with an error where it doesn't recognize the PCONP (which is a valid register). Does anyone know if  this is defined somewhere other than mbed.h?  Also , I would like to use the "backup registers" but don't quite know how to do this in the compiler either.

21 Mar 2010

PCONP is defined in the System Control block, which is declared as LPC_SC in LPC17xx.h (included from mbed.h):

LPC_SC->PCONP |= 1<<9; // turn on RTC
To work with the backup registers, use RTC block, LPC_RTC:

LPC_RTC->GPREG0 = 0x11223344; // write to General Purpose Register 0

 

22 Mar 2010

Hi David,

If you look in the mbed API docs (expand mbed library in the compiler), you'll see an interface called "rtc_time" (or you can see it on the web at rtc_time API docs).

The function you want is set_time(), and here is an example:

#include "mbed.h"

int main() {
    set_time(1256729737);  // Set RTC time to Wed, 28 Oct 2009 11:35:37

    while(1) {
        time_t seconds = time(NULL);

        printf("Time as seconds since January 1, 1970 = %d\n", seconds);

        printf("Time as a basic string = %s", ctime(&seconds));

        char buffer[32];
        strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
        printf("Time as a custom formatted string = %s", buffer);

        wait(1);
    }
}
This should help get you started using the RTC.

Simon

23 Sep 2011

Hi Simon,

I just copied that example and that's what I got (there is not any other code in the program):

/media/uploads/becaCAB/error_reloj.jpg

why is it not working properly?

Regards.

23 Sep 2011

Have a look at the 32Khz crystal (above LED 3), Check both pads are connected,

also check pin 4 has not gone above 4 Volts, I guess this will kill RTC Circuit inside !

Hope this helps

Ceri

BTW Code works OK on my MBED !