summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2012-06-23 09:26:43 +0200
committerNicolas Schodet2012-06-23 09:26:43 +0200
commit1f40ef677b67bcca9f3861751669dc67c441b474 (patch)
tree6b90f0fb0cf2c67a7fd69fb28dd9b00840163f77
parentbcdd45f8aafebb82aced4821aa942ca9590dc033 (diff)
src/common: reset when low voltage detected
-rw-r--r--src/common/rtc.c3
-rw-r--r--src/common/rtc.h2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/common/rtc.c b/src/common/rtc.c
index d3a1c9a..2ab5f26 100644
--- a/src/common/rtc.c
+++ b/src/common/rtc.c
@@ -24,6 +24,7 @@
#include "common.h"
#include "rtc.h"
#include "modules/twi/twi.h"
+#include "modules/utils/utils.h"
#define RTC_STOP 0x20
#define RTC_GO 0
@@ -172,6 +173,8 @@ rtc_get_time (uint8_t *hour, uint8_t *minute, uint8_t *second)
rtc_send_addr (RTC_REG_SECOND);
twi_master_recv (RTC_ADDR, buffer, sizeof (buffer));
twi_master_wait ();
+ if (buffer[0] & 0x80)
+ utils_reset ();
*second = rtc_bcd2bin (buffer[0] & 0x7f);
*minute = rtc_bcd2bin (buffer[1] & 0x7f);
*hour = rtc_bcd2bin (buffer[2] & 0x3f);
diff --git a/src/common/rtc.h b/src/common/rtc.h
index e379370..d413806 100644
--- a/src/common/rtc.h
+++ b/src/common/rtc.h
@@ -32,7 +32,7 @@
uint8_t
rtc_init (void);
-/** Get current timer. */
+/** Get current time (reset on low voltage event). */
void
rtc_get_time (uint8_t *hour, uint8_t *minute, uint8_t *second);