summaryrefslogtreecommitdiff
path: root/software/ihu/rtc.inc
diff options
context:
space:
mode:
Diffstat (limited to 'software/ihu/rtc.inc')
-rw-r--r--software/ihu/rtc.inc61
1 files changed, 28 insertions, 33 deletions
diff --git a/software/ihu/rtc.inc b/software/ihu/rtc.inc
index 79b4bdc..3f09557 100644
--- a/software/ihu/rtc.inc
+++ b/software/ihu/rtc.inc
@@ -32,23 +32,21 @@
;; constants
RTC_ADDR_W EQU b'11010000'
RTC_ADDR_R EQU b'11010001'
-RTC_REG_SEC EQU H'00'
-RTC_REG_MIN EQU H'01'
-RTC_REG_HOUR EQU H'02'
-RTC_REG_DOW EQU H'03'
-RTC_REG_DOM EQU H'04'
-RTC_REG_MON EQU H'05'
-RTC_REG_YEAR EQU H'06'
-RTC_REG_A1S EQU H'07'
-RTC_REG_A1M EQU H'08'
-RTC_REG_A1H EQU H'09'
-RTC_REG_A1D EQU H'0A'
-RTC_REG_A2M EQU H'0B'
-RTC_REG_A2H EQU H'0C'
-RTC_REG_A2D EQU H'0D'
-RTC_REG_CON EQU H'0E'
-RTC_REG_STAT EQU H'0F'
+RTC_REG_TOD0 EQU H'00'
+RTC_REG_TOD1 EQU H'01'
+RTC_REG_TOD2 EQU H'02'
+RTC_REG_TOD3 EQU H'03'
+RTC_REG_ALM0 EQU H'04'
+RTC_REG_ALM1 EQU H'05'
+RTC_REG_ALM2 EQU H'06'
+RTC_REG_CTL EQU H'07'
+RTC_REG_STAT EQU H'08'
+RTC_REG_TCH EQU H'09'
+RTC_INIT_CTL EQU b'00001000'
+;; RTC_INIT_TCH EQU b'10101011' ; trickle charger enabled with diode and 4kohm
+RTC_INIT_TCH EQU b'00001011' ; trickle charger disabled
+
;; -------------------------------------
i2c_start
bsf STATUS,RP0
@@ -204,46 +202,43 @@ rtc_init_after_clock_fail
btfsc RTC_BYTE,0
goto rtc_error_ack
- movlw RTC_REG_SEC
+ movlw RTC_REG_TOD0
call i2c_send_byte
btfsc RTC_BYTE,0
goto rtc_error_ack
- movlw .4
+ movlw .7
movwf RTC_BYTE_CNT
-rtc_init_clear1
+rtc_init_clear
clrw
call i2c_send_byte
btfsc RTC_BYTE,0
goto rtc_error_ack
decfsz RTC_BYTE_CNT,f
- goto rtc_init_clear1
+ goto rtc_init_clear
- movlw .2
- movwf RTC_BYTE_CNT
-rtc_init_clear2
- movlw .1
+ movlw RTC_INIT_CTL
call i2c_send_byte
btfsc RTC_BYTE,0
goto rtc_error_ack
- decfsz RTC_BYTE_CNT,f
- goto rtc_init_clear2
- movlw .10
- movwf RTC_BYTE_CNT
-rtc_init_clear3
clrw
call i2c_send_byte
btfsc RTC_BYTE,0
goto rtc_error_ack
- decfsz RTC_BYTE_CNT,f
- goto rtc_init_clear3
+
+ movlw RTC_INIT_TCH
+ call i2c_send_byte
+ btfsc RTC_BYTE,0
+ goto rtc_error_ack
call i2c_stop
return
;; ---------------
rtc_get_time
+ movlw RTC_TOD0
+ movwf FSR
call i2c_start
movlw RTC_ADDR_W
@@ -251,7 +246,7 @@ rtc_get_time
btfsc RTC_BYTE,0
goto rtc_error_ack
- movlw RTC_REG_SEC
+ movlw RTC_REG_TOD0
call i2c_send_byte
btfsc RTC_BYTE,0
goto rtc_error_ack
@@ -263,7 +258,7 @@ rtc_get_time
btfsc RTC_BYTE,0
goto rtc_error_ack
- movlw .7
+ movlw .4
movwf RTC_BYTE_CNT
rtc_get_time_loop
call i2c_recv_byte