@@ -65,13 +65,13 @@ bool rtc_set_datetime(datetime_t *t) {
65
65
}
66
66
67
67
// Write to setup registers
68
- rtc_hw -> setup_0 = (((uint )t -> year ) << RTC_SETUP_0_YEAR_LSB ) |
69
- (((uint )t -> month ) << RTC_SETUP_0_MONTH_LSB ) |
70
- (((uint )t -> day ) << RTC_SETUP_0_DAY_LSB );
71
- rtc_hw -> setup_1 = (((uint )t -> dotw ) << RTC_SETUP_1_DOTW_LSB ) |
72
- (((uint )t -> hour ) << RTC_SETUP_1_HOUR_LSB ) |
73
- (((uint )t -> min ) << RTC_SETUP_1_MIN_LSB ) |
74
- (((uint )t -> sec ) << RTC_SETUP_1_SEC_LSB );
68
+ rtc_hw -> setup_0 = (((uint32_t )t -> year ) << RTC_SETUP_0_YEAR_LSB ) |
69
+ (((uint32_t )t -> month ) << RTC_SETUP_0_MONTH_LSB ) |
70
+ (((uint32_t )t -> day ) << RTC_SETUP_0_DAY_LSB );
71
+ rtc_hw -> setup_1 = (((uint32_t )t -> dotw ) << RTC_SETUP_1_DOTW_LSB ) |
72
+ (((uint32_t )t -> hour ) << RTC_SETUP_1_HOUR_LSB ) |
73
+ (((uint32_t )t -> min ) << RTC_SETUP_1_MIN_LSB ) |
74
+ (((uint32_t )t -> sec ) << RTC_SETUP_1_SEC_LSB );
75
75
76
76
// Load setup values into rtc clock domain
77
77
rtc_hw -> ctrl = RTC_CTRL_LOAD_BITS ;
@@ -95,13 +95,13 @@ bool rtc_get_datetime(datetime_t *t) {
95
95
uint32_t rtc_0 = rtc_hw -> rtc_0 ;
96
96
uint32_t rtc_1 = rtc_hw -> rtc_1 ;
97
97
98
- t -> dotw = (rtc_0 & RTC_RTC_0_DOTW_BITS ) >> RTC_RTC_0_DOTW_LSB ;
99
- t -> hour = (rtc_0 & RTC_RTC_0_HOUR_BITS ) >> RTC_RTC_0_HOUR_LSB ;
100
- t -> min = (rtc_0 & RTC_RTC_0_MIN_BITS ) >> RTC_RTC_0_MIN_LSB ;
101
- t -> sec = (rtc_0 & RTC_RTC_0_SEC_BITS ) >> RTC_RTC_0_SEC_LSB ;
102
- t -> year = (rtc_1 & RTC_RTC_1_YEAR_BITS ) >> RTC_RTC_1_YEAR_LSB ;
103
- t -> month = (rtc_1 & RTC_RTC_1_MONTH_BITS ) >> RTC_RTC_1_MONTH_LSB ;
104
- t -> day = (rtc_1 & RTC_RTC_1_DAY_BITS ) >> RTC_RTC_1_DAY_LSB ;
98
+ t -> dotw = (int8_t ) (( rtc_0 & RTC_RTC_0_DOTW_BITS ) >> RTC_RTC_0_DOTW_LSB ) ;
99
+ t -> hour = (int8_t ) (( rtc_0 & RTC_RTC_0_HOUR_BITS ) >> RTC_RTC_0_HOUR_LSB ) ;
100
+ t -> min = (int8_t ) (( rtc_0 & RTC_RTC_0_MIN_BITS ) >> RTC_RTC_0_MIN_LSB ) ;
101
+ t -> sec = (int8_t ) (( rtc_0 & RTC_RTC_0_SEC_BITS ) >> RTC_RTC_0_SEC_LSB ) ;
102
+ t -> year = (int16_t ) (( rtc_1 & RTC_RTC_1_YEAR_BITS ) >> RTC_RTC_1_YEAR_LSB ) ;
103
+ t -> month = (int8_t ) (( rtc_1 & RTC_RTC_1_MONTH_BITS ) >> RTC_RTC_1_MONTH_LSB ) ;
104
+ t -> day = (int8_t ) (( rtc_1 & RTC_RTC_1_DAY_BITS ) >> RTC_RTC_1_DAY_LSB ) ;
105
105
106
106
return true;
107
107
}
@@ -148,13 +148,13 @@ void rtc_set_alarm(datetime_t *t, rtc_callback_t user_callback) {
148
148
rtc_disable_alarm ();
149
149
150
150
// Only add to setup if it isn't -1
151
- rtc_hw -> irq_setup_0 = ((t -> year < 0 ) ? 0 : (((uint )t -> year ) << RTC_IRQ_SETUP_0_YEAR_LSB )) |
152
- ((t -> month < 0 ) ? 0 : (((uint )t -> month ) << RTC_IRQ_SETUP_0_MONTH_LSB )) |
153
- ((t -> day < 0 ) ? 0 : (((uint )t -> day ) << RTC_IRQ_SETUP_0_DAY_LSB ));
154
- rtc_hw -> irq_setup_1 = ((t -> dotw < 0 ) ? 0 : (((uint )t -> dotw ) << RTC_IRQ_SETUP_1_DOTW_LSB )) |
155
- ((t -> hour < 0 ) ? 0 : (((uint )t -> hour ) << RTC_IRQ_SETUP_1_HOUR_LSB )) |
156
- ((t -> min < 0 ) ? 0 : (((uint )t -> min ) << RTC_IRQ_SETUP_1_MIN_LSB )) |
157
- ((t -> sec < 0 ) ? 0 : (((uint )t -> sec ) << RTC_IRQ_SETUP_1_SEC_LSB ));
151
+ rtc_hw -> irq_setup_0 = ((t -> year < 0 ) ? 0 : (((uint32_t )t -> year ) << RTC_IRQ_SETUP_0_YEAR_LSB )) |
152
+ ((t -> month < 0 ) ? 0 : (((uint32_t )t -> month ) << RTC_IRQ_SETUP_0_MONTH_LSB )) |
153
+ ((t -> day < 0 ) ? 0 : (((uint32_t )t -> day ) << RTC_IRQ_SETUP_0_DAY_LSB ));
154
+ rtc_hw -> irq_setup_1 = ((t -> dotw < 0 ) ? 0 : (((uint32_t )t -> dotw ) << RTC_IRQ_SETUP_1_DOTW_LSB )) |
155
+ ((t -> hour < 0 ) ? 0 : (((uint32_t )t -> hour ) << RTC_IRQ_SETUP_1_HOUR_LSB )) |
156
+ ((t -> min < 0 ) ? 0 : (((uint32_t )t -> min ) << RTC_IRQ_SETUP_1_MIN_LSB )) |
157
+ ((t -> sec < 0 ) ? 0 : (((uint32_t )t -> sec ) << RTC_IRQ_SETUP_1_SEC_LSB ));
158
158
159
159
// Set the match enable bits for things we care about
160
160
if (t -> year >= 0 ) hw_set_bits (& rtc_hw -> irq_setup_0 , RTC_IRQ_SETUP_0_YEAR_ENA_BITS );
0 commit comments