]> cloudbase.mooo.com Git - avrcpm.git/blobdiff - avr/timer.asm
SVN --> GIT
[avrcpm.git] / avr / timer.asm
index 5a4cc12280bfe81584629340a7a22ac06f0fc6cd..e64d0811b14fbda80db04d71447544fcc1d93b75 100644 (file)
@@ -17,7 +17,7 @@
 ;    You should have received a copy of the GNU General Public License
 ;    along with avrcpm.  If not, see <http://www.gnu.org/licenses/>.
 ;
-;    $Id$
+;    $Id: timer.asm 153 2014-11-12 12:59:42Z rapid $
 ;
 
        .dseg
@@ -40,8 +40,8 @@ timer_sec:
 ; don't change order here, clock put/get depends on it.
 cntms_out:             ; register for ms
        .byte   2
-utime_io:              ; register for uptime. 
-       .byte   4       
+utime_io:              ; register for uptime.
+       .byte   4
 cnt_1ms:
 .equ ot_1ms    = cnt_1ms-timer_var
        .byte   2
@@ -50,10 +50,10 @@ uptime:
        .byte   4
 timer_top:
 .equ timer_size        = timer_top - timer_base
-       
+
 .equ utofs     = cnt_1ms-cntms_out
 .equ timerofs  = cnt_1ms-timer_ms
+
 clk_out:
 .equ oclk_out  = clk_out-timer_var
        .byte   7       ;
@@ -62,28 +62,28 @@ clock:
        .byte   7       ;Format (bin): s m h D M YY
 .equ clkofs    = clock-clk_out
 
-       .cseg   
+       .cseg
 
 ; ------------- system timer 1ms ---------------
 
 
 ; Timer/Counter1 Compare Match B interrupt
-       
+
        INTERRUPT OC1Baddr
 
 .if TIMER_DEBUG
        cbi     PORTC,5
-.endif 
+.endif
        push    zl
        in      zl,SREG
        push    zl
        push    zh
        inm8    zl,OCR1BL
        inm8    zh,OCR1BH
-       addiw   z,F_CPU/1000
+       addiw   z,TC_1MS
        outm8   OCR1BH,zh
        outm8   OCR1BL,zl
-       
+
        push    yl
        push    yh
        ldiw    y,timer_var
@@ -93,7 +93,7 @@ clock:
        subi    zl,1
        brcs    syscl0                          ;timer was 0 before (not running)
        sts     srx_char_to,zl                  ;timer is running, store new value
-       brne    syscl0                          
+       brne    syscl0
        rcall   srx_to
 syscl0:
 #endif
@@ -101,7 +101,7 @@ syscl0:
        subi    zl,1
        brcs    syscl_t1n
        std     y+ot_timer1,zl
-syscl_t1n:     
+syscl_t1n:
        ldd     zl,y+ot_timer2
        subi    zl,1
        brcs    syscl_t2n
@@ -169,7 +169,7 @@ syscl_clk_date:
        ldd     zl,y+o_clock+5          ;year
        andi    zl,0x03
        brne    syscl_clknl
-       inc     zh                      ;leap year 
+       inc     zh                      ;leap year
 syscl_clknl:
        ldd     zl,y+o_clock+3          ;day
        inc     zl
@@ -201,7 +201,7 @@ syscl_end:
        pop     zl
 .if TIMER_DEBUG
        sbi     PORTC,5
-.endif 
+.endif
        reti
 
 ; days per month
@@ -225,18 +225,18 @@ dly_loop:
        ret
 
 ; ----------------------------------------------
-; 
+;
 clockget:
        ldiw    z,clk_out
        tst     temp3
        breq    clkget_copy             ;lowest byte requestet, latch clock
-       
+
        add     zl,temp3
        adc     zh,_0
        ld      temp,z
 clkget_end:
        ret
-       
+
 
 clkget_copy:
        ldi     temp3,7
@@ -255,7 +255,7 @@ clkget_l:
        std     z+1,temp2
        ldi     temp3,5
 clkget_l2:
-       ld      temp,-z 
+       ld      temp,-z
        rcall   binbcd2
        st      z,temp
        dec     temp3
@@ -265,7 +265,7 @@ clkget_l2:
        ret                             ;req. byte in temp
 
 ; ----------------------------------------------
-; 
+;
 clockput:
        ldiw    z,clk_out
        add     zl,temp3
@@ -275,12 +275,12 @@ clockput:
        breq    clkput_copy             ;lowest byte stored, latch clock
 clkput_end:
        ret
-               
+
 
 clkput_copy:
        ldi     temp3,5
 clkput_l2:
-       ld      temp,z  
+       ld      temp,z
        rcall   bcdbin2
        st      z+,temp
        dec     temp3
@@ -324,7 +324,7 @@ tobcd_l:
        add     temp,_tmp0
        pop     temp2
        ret
-       
+
 
 binbcd4:
        ldi     temp3,16
@@ -406,8 +406,8 @@ rtc_get:
        rcall   i2c_write
        ldi     temp2,3
        rcall   i2c_read                ;get year (stored in RTC-RAM addr. 10h)
-       tst     temp
-       brmi    rtc_get_e               ;i2c error
+       andi    temp,0x3
+       breq    rtc_get_e               ;i2c error
 
        ldd     temp3,z+1               ;save year
        ldd     xl,   z+2
@@ -417,8 +417,8 @@ rtc_get:
        rcall   i2c_write
        ldi     temp2,6
        rcall   i2c_read
-       tst     temp
-       brmi    rtc_get_e
+       andi    temp,0x3
+       breq    rtc_get_e               ;i2c error
 
        mov     temp2,xl                ;year century
        ldd     temp,z+4                ;get year
@@ -428,7 +428,7 @@ rtc_get:
        eor     temp,temp3
        andi    temp,0x03
        breq    rtc_get_1
-       subi    temp3, low(-1)  
+       subi    temp3, low(-1)
        sbci    temp2, high(-1)
 rtc_get_1:
        ldiw    x,clock
@@ -466,7 +466,7 @@ rtc_get_e:
 
 ;----------------------------------------------
 ; Set hardware clock from software clock
-; 
+;
 ; Register:    temp2:  s
 ;              temp3:  m
 ;              xh:     h
@@ -539,7 +539,7 @@ rtc_set:
 #endif /* I2C_SUPPORT */
 
 ; ----------------------------------------------
-; 
+;
 
 utimeget:
        ldi     temp,0xFF
@@ -547,13 +547,13 @@ utimeget:
        subi    temp3,1
        brcs    utimget_end             ;Rel. port number = 0 ? (controlport)
        breq    utimget_copy            ;lowest byte requestet, latch clock
-       
+
        add     zl,temp3
        adc     zh,_0
        ld      temp,z
 utimget_end:
        ret
-       
+
 utimget_copy:
        ldi     temp2,6
        cli
@@ -570,7 +570,7 @@ utimget_l:
 utimeput:
        subi    temp3,1
        brcc    utput__1
-       
+
        ; clock control
 
        cpi     temp,starttimercmd
@@ -583,8 +583,8 @@ utimeput:
        brne    utcp_ex
        rjmp    uptime_print            ;cnt_1ms
 utcp_ex:
-       ret     
-       
+       ret
+
 utput_quit:
        rcall   timer_print
        rjmp    timer_start
@@ -592,12 +592,12 @@ utput_quit:
 utput__1:
        ldiw    z,cntms_out
        breq    utput__copy             ;lowest byte requestet, latch clock
-       
+
        add     zl,temp3
        adc     zh,_0
        st      z,temp
        ret
-               
+
 utput__copy:
        st      z,temp
        adiw    z,5
@@ -628,7 +628,7 @@ ts_loop:
 
 ; print timer
 ;
-       
+
 timer_print:
        push    r15             ;
        push    r14             ;
@@ -646,9 +646,9 @@ timer_print:
        ld      temp2,z+
        sbc     yh,temp2
        brsh    tp_s
-       
+
        addiw   y,1000
-       sec     
+       sec
 tp_s:
        push    yh
        push    yl
@@ -669,7 +669,7 @@ tp_s:
        ldd     r15,z+timerofs
        ld      yh,z+
        sbc     r15,yh
-       
+
        printnewline
        printstring "Timer running. Elapsed: "
        rcall   print_ultoa
@@ -687,7 +687,7 @@ tp_s:
        pop     r14
        pop     r15
        ret
-       
+
 uptime_print:
        push    r15
        push    r14
@@ -697,16 +697,16 @@ uptime_print:
        push    temp
        ld      temp,z+
        push    temp
-       
+
        ld      temp,z+
        ld      temp2,z+
        ld      r14,z+
        sei
        ld      r15,z+
-       
+
        printnewline
        printstring "Uptime: "
-       
+
        rcall   print_ultoa
        printstring ","
 
@@ -722,4 +722,3 @@ uptime_print:
        ret
 
 ; vim:set ts=8 noet nowrap
-