57#define RTCC_REGISTER_INT1(ptr) rtcc_int1_callback = ptr;
58extern void (*rtcc_int1_callback)(uint8_t value);
66#define CENTHS_ADDR 0x00
71#define MONTHS_ADDR 0x05
73#define WEEKDAYLS_ADDR 0x07
76#define ALARM_MAP_OFFSET 0x08
77#define HUNDREDTHS_ALARM_ADDR 0x00
78#define SECONDS_ALARM_ADDR 0x01
79#define MINUTES_ALARM_ADDR 0x02
80#define HOURS_ALARM_ADDR 0x03
81#define DAY_ALARMS_ADDR 0x04
82#define MONTHS_ALARM_ADDR 0x05
83#define WEEKDAYS_ALARM_ADDR 0x06
86#define CONFIG_MAP_OFFSET 0x0F
87#define STATUS_ADDR 0x00
88#define CTRL_1_ADDR 0x01
89#define CTRL_2_ADDR 0x02
90#define INT_MASK_ADDR 0x03
92#define CAL_XT_ADDR 0x05
93#define CAL_RC_HI_ADDR 0x06
94#define CAL_RC_LO_ADDR 0x07
95#define INT_POL_ADDR 0x08
96#define TIMER_CONTROL_ADDR 0x09
97#define TIMER_COUNTDOWN_ADDR 0x0A
98#define TIMER_INITIAL_ADDR 0x0B
100#define OSC_CONTROL_ADDR 0x0D
101#define OSC_STATUS_ADDR 0x0E
102#define CONF_KEY_ADDR 0x10
103#define TRICKLE_ADDR 0x11
104#define BREF_CTRL_ADDR 0x12
105#define AF_CTRL_ADDR 0x17
106#define BAT_MODE_IO_ADDR 0x18
107#define ASTAT_ADDR 0x20
108#define OCTRL_ADDR 0x21
111#define RAM_1_ADDR (CONFIG_MAP_OFFSET + 0x31)
113#define RAM_2_ADDR (CONFIG_MAP_OFFSET + 0x71)
119#define STATUS_CB 0x80
120#define STATUS_BAT 0x40
121#define STATUS_WDT 0x20
122#define STATUS_BL 0x10
123#define STATUS_TIM 0x08
124#define STATUS_ALM 0x04
125#define STATUS_EX2 0x02
126#define STATUS_EX1 0x01
128#define CTRL1_WRTC 0x01
129#define CTRL1_ARST 0x04
130#define CTRL1_OUT 0x10
131#define CTRL1_OUTB 0x20
132#define CTRL1_1224 0x40
133#define CTRL1_STOP 0x80
136#define CTRL2_OUT1S_NIRQ_OUT 0x00
137#define CTRL2_OUT1S_NIRQ_SQW_OUT 0x01
138#define CTRL2_OUT1S_NIRQ_SQW_NIRQ 0x02
139#define CTRL2_OUT1S_NIRQ_NAIRQ_OUT 0x03
142#define CTRL2_OUT2S_SQW_OUT 0x04
143#define CTRL2_OUT2S_NAIRQ_OUTB 0x0C
144#define CTRL2_OUT2S_TIRQ_OUTB 0x10
145#define CTRL2_OUT2S_NTIRQ_OUTB 0x14
146#define CTRL2_OUT2S_OUTB 0x1C
149#define INTMASK_EX1E 0x01
150#define INTMASK_EX2E 0x02
151#define INTMASK_AIE 0x04
152#define INTMASK_TIE 0x08
153#define INTMASK_BLIE 0x10
154#define INTMASK_IM_HIGH 0x20
155#define INTMASK_IM_MED 0x40
156#define INTMASK_IM_LOW 0x60
157#define INTMASK_CEB 0x80
160#define COUNTDOWN_TIMER_TE 0x80
161#define COUNTDOWN_TIMER_TM 0x40
162#define COUNTDOWN_TIMER_TRPT 0x20
163#define COUNTDOWN_TIMER_RPT_SECOND 0x1C
164#define COUNTDOWN_TIMER_RPT_MINUTE 0x18
165#define COUNTDOWN_TIMER_RPT_HOUR 0x24
166#define COUNTDOWN_TIMER_RPT_DAY 0x10
167#define COUNTDOWN_TIMER_RPT_WEEK 0x0C
168#define COUNTDOWN_TIMER_RPT_MONTH 0x08
169#define COUNTDOWN_TIMER_RPT_YEAR 0x04
170#define COUNTDOWN_TIMER_RPT_SHIFT 0x02
171#define COUNTDOWN_TIMER_TFS_ONE 0x01
172#define COUNTDOWN_TIMER_TFS_TWO 0x02
173#define COUNTDOWN_TIMER_TFS_THREE 0x03
176#define OSCONTROL_ACIE 0x01
177#define OSCONTROL_OFIE 0x02
178#define OSCONTROL_FOS 0x08
179#define OSCONTROL_AOS 0x10
180#define OSCONTROL_ACAL_NO_CAL 0x00
181#define OSCONTROL_ACAL_17_MIN 0x40
182#define OSCONTROL_ACAL_9_MIN 0x60
183#define OSCONTROL_OSEL 0x80
191#define AB08XX_ADDR 0x69
192#define INT_BUFF_SIZE 20L
193#define TCS_DIODE_3K (TCS_ENABLE + 0x05)
194#define TCS_DIODE_6K (TCS_ENABLE + 0x06)
195#define TCS_DIODE_11K (TCS_ENABLE + 0x07)
196#define RTCC_TOGGLE_PM_BIT 0x20
197#define RTCC_FIX_10THS_HUNDRETHS 0xF0
198#define RTCC_FIX_100THS_HUNDRETHS 0xFF
199#define RTCC_TD_MAP_SIZE (WEEKDAYLS_ADDR + 1)
200#define RTCC_ALARM_MAP_SIZE (WEEKDAYS_ALARM_ADDR + 1)
201#define RTCC_CONFIG_MAP_SIZE (BREF_CTRL_ADDR + 1)
207#define AB08_ERROR (-1)
208#define AB08_SUCCESS 0x00
218 RTCC_PRINT_ALARM_DEC,
244 RTCC_CENTURY_19XX_21XX = 1,
249 RTCC_REPEAT_NONE = 0,
262 RTCC_CONFKEY_OSCONTROL = 0xA1,
263 RTCC_CONFKEY_SWRESET = 0x3C,
264 RTCC_CONFKEY_DEFREGS = 0x9D,
273 RTCC_AUTOCAL_DISABLE = 0,
280 RTCC_TRIGGER_INT1 = 0,
295typedef struct ab0805_struct_simple_td_reg {
306} __attribute__ ((packed)) simple_td_map;
353 uint8_t repeat, uint8_t trigger);
int8_t rtcc_init(void)
Initialize the RTCC, configures the I2C bus, interrupts and registers.
int8_t rtcc_set_calibration(uint8_t mode, int32_t adjust)
Manually calibrate the RTCC.
int8_t rtcc_set_autocalibration(uint8_t period)
Set the autocallibration period.
int8_t rtcc_set_time_date(simple_td_map *data)
Set the time and date.
int8_t rtcc_print(uint8_t value)
Print data from the RTCC module, either from the memory map (values in BCD) or actual readable data (...
int8_t rtcc_date_increment_seconds(simple_td_map *data, uint16_t seconds)
Increments the current date by a number of seconds.
int8_t rtcc_set_alarm_time_date(simple_td_map *data, uint8_t state, uint8_t repeat, uint8_t trigger)
Configure the RTCC to match an alarm counter.
int8_t rtcc_get_time_date(simple_td_map *data)
Get the current time and date.