blob: ed821700408343db298ac9205ec3e917adeaf5d2 [file] [log] [blame]
Christina Quast637ace92014-11-28 13:28:37 +01001/* ----------------------------------------------------------------------------
2 * ATMEL Microcontroller Software Support
3 * ----------------------------------------------------------------------------
4 * Copyright (c) 2009, Atmel Corporation
5 *
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * - Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the disclaimer below.
13 *
14 * Atmel's name may not be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 * ----------------------------------------------------------------------------
28 */
29
30/**
31 * \file
32 *
33 * Interface for Real Time Clock (RTC) controller.
34 *
35 */
36
37#ifndef _RTC_
38#define _RTC_
39
40/*----------------------------------------------------------------------------
41 * Headers
42 *----------------------------------------------------------------------------*/
43#include "chip.h"
44
45#include <stdint.h>
46
47/*----------------------------------------------------------------------------
48 * Definitions
49 *----------------------------------------------------------------------------*/
50
51#define RTC_HOUR_BIT_LEN_MASK 0x3F
52#define RTC_MIN_BIT_LEN_MASK 0x7F
53#define RTC_SEC_BIT_LEN_MASK 0x7F
54#define RTC_CENT_BIT_LEN_MASK 0x7F
55#define RTC_YEAR_BIT_LEN_MASK 0xFF
56#define RTC_MONTH_BIT_LEN_MASK 0x1F
57#define RTC_DATE_BIT_LEN_MASK 0x3F
58#define RTC_WEEK_BIT_LEN_MASK 0x07
59
60/*----------------------------------------------------------------------------
61 * Exported functions
62 *----------------------------------------------------------------------------*/
63
64#ifdef __cplusplus
65 extern "C" {
66#endif
67
68extern void RTC_SetHourMode( Rtc* pRtc, uint32_t dwMode ) ;
69
70extern uint32_t RTC_GetHourMode( Rtc* pRtc ) ;
71
72extern void RTC_EnableIt( Rtc* pRtc, uint32_t dwSources ) ;
73
74extern void RTC_DisableIt( Rtc* pRtc, uint32_t dwSources ) ;
75
76extern int RTC_SetTime( Rtc* pRtc, uint8_t ucHour, uint8_t ucMinute, uint8_t ucSecond ) ;
77
78extern void RTC_GetTime( Rtc* pRtc, uint8_t *pucHour, uint8_t *pucMinute, uint8_t *pucSecond ) ;
79
80extern int RTC_SetTimeAlarm( Rtc* pRtc, uint8_t *pucHour, uint8_t *pucMinute, uint8_t *pucSecond ) ;
81
82extern void RTC_GetDate( Rtc* pRtc, uint16_t *pwYear, uint8_t *pucMonth, uint8_t *pucDay, uint8_t *pucWeek ) ;
83
84extern int RTC_SetDate( Rtc* pRtc, uint16_t wYear, uint8_t ucMonth, uint8_t ucDay, uint8_t ucWeek ) ;
85
86extern int RTC_SetDateAlarm( Rtc* pRtc, uint8_t *pucMonth, uint8_t *pucDay ) ;
87
88extern void RTC_ClearSCCR( Rtc* pRtc, uint32_t dwMask ) ;
89
90extern uint32_t RTC_GetSR( Rtc* pRtc, uint32_t dwMask ) ;
91
92#ifdef __cplusplus
93}
94#endif
95
96#endif /* #ifndef _RTC_ */
97