view rtc.h @ 69:cf9eb08b8b23

CRC a word at a time rather than the whole block (since we are reading/writing a word at a time).
author Daniel O'Connor <darius@dons.net.au>
date Sun, 14 Apr 2013 22:52:21 +0930
parents 435c6330896c
children
line wrap: on
line source

/* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
#define RTC_PRESCALE 32768

/* usec = x * 1e6 / 32768
 * However, 1e6 / 32768 = 30.5 which will result in a large error (max of 15807 usec), so we use
 * some extra bits to get more precision. We can scale up until 32768 * n is > 2^32.
 * This results in a maximum error of 1 usec.
 */
#define RTC_PS2USEC(x) ( \
	(uint32_t)( \
	    (uint32_t)((1 << 9) * (1e6 / RTC_PRESCALE)) * (RTC_PRESCALE - (x))) >> 9)