diff options
Diffstat (limited to 'software/ihu/rtc.inc')
-rw-r--r-- | software/ihu/rtc.inc | 61 |
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 |