57 #define RTCC_REGISTER_INT1(ptr) rtcc_int1_callback = ptr; 58 extern void (*rtcc_int1_callback)(uint8_t value);
66 #define CENTHS_ADDR 0x00 69 #define HOUR_ADDR 0x03 71 #define MONTHS_ADDR 0x05 72 #define YEAR_ADDR 0x06 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 109 #define EXT_ADDR 0x30 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,
295 typedef struct ab0805_struct_simple_td_reg {
306 } __attribute__ ((packed)) simple_td_map;
353 uint8_t repeat, uint8_t trigger);
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_set_autocalibration(uint8_t period)
Set the autocallibration period.
int8_t rtcc_get_time_date(simple_td_map *data)
Get the current time and date.
int8_t rtcc_init(void)
Initialize the RTCC, configures the I2C bus, interrupts and registers.
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_set_calibration(uint8_t mode, int32_t adjust)
Manually calibrate the RTCC.
int8_t rtcc_set_time_date(simple_td_map *data)
Set the time and date.