LED clock
 All Files Functions Variables Macros Groups
rtc_ds1307.h
Go to the documentation of this file.
1 /* This program is free software: you can redistribute it and/or modify
2  * it under the terms of the GNU General Public License as published by
3  * the Free Software Foundation, either version 3 of the License, or
4  * (at your option) any later version.
5  *
6  * This program is distributed in the hope that it will be useful,
7  * but WITHOUT ANY WARRANTY; without even the implied warranty of
8  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9  * GNU General Public License for more details.
10  *
11  * You should have received a copy of the GNU General Public License
12  * along with this program. If not, see <http://www.gnu.org/licenses/>.
13  *
14  */
22 #pragma once
23 
28 #define RTC_DS1307_I2C I2C1
29 #define RTC_DS1307_I2C_RCC RCC_I2C1
30 #define RTC_DS1307_I2C_PORT_RCC RCC_GPIOB
31 #define RTC_DS1307_I2C_PORT GPIOB
32 #define RTC_DS1307_I2C_PIN_SDA GPIO_I2C1_SDA
33 #define RTC_DS1307_I2C_PIN_SCL GPIO_I2C1_SCL
34 #define RTC_DS1307_I2C_ADDR 0x68
41 #define RTC_DS1307_SQUARE_WAVE_TICKS (RTC_DS1307_SQUARE_WAVE_FREQUENCY/256)
42 #define RTC_DS1307_SQUARE_WAVE_FREQUENCY 4096
43 #define RTC_DS1307_SQUARE_WAVE_TIMER TIM2
44 #define RTC_DS1307_SQUARE_WAVE_TIMER_RCC RCC_TIM2
45 #define RTC_DS1307_SQUARE_WAVE_TIMER_IC TIM_IC1
46 #define RTC_DS1307_SQUARE_WAVE_TIMER_IN TIM_IC_IN_TI1
47 #define RTC_DS1307_SQUARE_WAVE_TIMER_TS TIM_SMCR_TS_IT1FP1
48 #define RTC_DS1307_SQUARE_WAVE_TIMER_IRQ NVIC_TIM2_IRQ
49 #define RTC_DS1307_SQUARE_WAVE_TIMER_ISR tim2_isr
50 #define RTC_DS1307_SQUARE_WAVE_GPIO_RCC RCC_GPIOA
51 #define RTC_DS1307_SQUARE_WAVE_GPIO_PORT GPIOA
52 #define RTC_DS1307_SQUARE_WAVE_GPIO_PIN GPIO_TIM2_CH1_ETR
55 #if defined(RTC_DS1307_SQUARE_WAVE_TICKS)
56 extern volatile uint32_t rtc_ds1307_ticks;
57 extern volatile bool rtc_ds1307_tick_flag;
58 #endif
59 
63 void rtc_ds1307_setup(void);
71 uint16_t rtc_ds1307_read_square_wave(void);
75 uint8_t rtc_ds1307_read_seconds(void);
79 uint8_t rtc_ds1307_read_minutes(void);
83 uint8_t rtc_ds1307_read_hours(void);
87 uint8_t rtc_ds1307_read_day(void);
91 uint8_t rtc_ds1307_read_date(void);
95 uint8_t rtc_ds1307_read_month(void);
99 uint8_t rtc_ds1307_read_year(void);
103 uint8_t* rtc_ds1307_read_time(void);
116 bool rtc_ds1307_write_square_wave(uint16_t frequency);
121 bool rtc_ds1307_write_seconds(uint8_t seconds);
126 bool rtc_ds1307_write_minutes(uint8_t minutes);
131 bool rtc_ds1307_write_hours(uint8_t hours);
136 bool rtc_ds1307_write_day(uint8_t day);
141 bool rtc_ds1307_write_date(uint8_t date);
146 bool rtc_ds1307_write_month(uint8_t month);
151 bool rtc_ds1307_write_year(uint8_t year);
162 bool rtc_ds1307_write_time(uint8_t seconds, uint8_t minutes, uint8_t hours, uint8_t day, uint8_t date, uint8_t month, uint8_t year);
uint8_t rtc_ds1307_read_year(void)
read year from RTC IC
Definition: rtc_ds1307.c:216
bool rtc_ds1307_oscillator_disable(void)
disable RTC IC oscillator
Definition: rtc_ds1307.c:285
bool rtc_ds1307_write_day(uint8_t day)
write day into RTC IC
Definition: rtc_ds1307.c:360
uint8_t rtc_ds1307_read_seconds(void)
read seconds from RTC IC
Definition: rtc_ds1307.c:154
uint8_t rtc_ds1307_read_day(void)
read day from RTC IC
Definition: rtc_ds1307.c:189
void rtc_ds1307_setup(void)
setup communication with RTC IC configure the I2C port defined in the sources
Definition: rtc_ds1307.c:44
bool rtc_ds1307_write_square_wave(uint16_t frequency)
write square wave output frequency (in Hz)
Definition: rtc_ds1307.c:301
bool rtc_ds1307_write_seconds(uint8_t seconds)
write seconds into RTC IC
Definition: rtc_ds1307.c:326
volatile uint32_t rtc_ds1307_ticks
increment on SQUARE_WAVE_TICS square wave ticks
Definition: rtc_ds1307.c:40
bool rtc_ds1307_oscillator_enable(void)
enable RTC IC oscillator
Definition: rtc_ds1307.c:293
bool rtc_ds1307_write_month(uint8_t month)
write month into RTC IC
Definition: rtc_ds1307.c:380
uint8_t rtc_ds1307_read_minutes(void)
read minutes from RTC IC
Definition: rtc_ds1307.c:163
bool rtc_ds1307_oscillator_disabled(void)
verify if oscillator is disabled
Definition: rtc_ds1307.c:133
uint8_t rtc_ds1307_read_hours(void)
read hours from RTC IC
Definition: rtc_ds1307.c:172
bool rtc_ds1307_write_time(uint8_t seconds, uint8_t minutes, uint8_t hours, uint8_t day, uint8_t date, uint8_t month, uint8_t year)
write time into RTC IC
Definition: rtc_ds1307.c:400
uint8_t * rtc_ds1307_read_time(void)
read time from RTC IC
Definition: rtc_ds1307.c:224
bool rtc_ds1307_write_year(uint8_t year)
write year into RTC IC
Definition: rtc_ds1307.c:390
bool rtc_ds1307_write_minutes(uint8_t minutes)
write minutes into RTC IC
Definition: rtc_ds1307.c:340
volatile bool rtc_ds1307_tick_flag
set on SQUARE_WAVE_TICS square wave ticks
Definition: rtc_ds1307.c:41
bool rtc_ds1307_write_hours(uint8_t hours)
write hours into RTC IC
Definition: rtc_ds1307.c:350
bool rtc_ds1307_write_date(uint8_t date)
write date into RTC IC
Definition: rtc_ds1307.c:370
uint16_t rtc_ds1307_read_square_wave(void)
read square wave output frequency (in Hz)
Definition: rtc_ds1307.c:140
uint8_t rtc_ds1307_read_date(void)
read date from RTC IC
Definition: rtc_ds1307.c:198
uint8_t rtc_ds1307_read_month(void)
read month from RTC IC
Definition: rtc_ds1307.c:207