avr: use 2 byte counter for f_keepup.
This commit is contained in:
@@ -11,9 +11,11 @@
|
|||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
; defines
|
; defines
|
||||||
|
|
||||||
.equ FILTER_KEEPUP_OFFS_TIMER = 0
|
.equ FILTER_KEEPUP_OFFS_TIMER_LOW = 0
|
||||||
.equ FILTER_KEEPUP_OFFS_RESTARTVALUE = 1
|
.equ FILTER_KEEPUP_OFFS_TIMER_HIGH = 1
|
||||||
.equ FILTER_KEEPUP_DATA_SIZE = 2
|
.equ FILTER_KEEPUP_OFFS_RESTARTVALUE_LOW = 2
|
||||||
|
.equ FILTER_KEEPUP_OFFS_RESTARTVALUE_HIGH = 3
|
||||||
|
.equ FILTER_KEEPUP_DATA_SIZE = 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -32,7 +34,8 @@
|
|||||||
|
|
||||||
FilterKeepUp_Init:
|
FilterKeepUp_Init:
|
||||||
clr r16
|
clr r16
|
||||||
std Y+FILTER_KEEPUP_OFFS_TIMER, r16
|
std Y+FILTER_KEEPUP_OFFS_TIMER_LOW, r16
|
||||||
|
std Y+FILTER_KEEPUP_OFFS_TIMER_HIGH, r16
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
@@ -54,12 +57,28 @@ FilterKeepUp_Fini:
|
|||||||
; @routine FilterKeepUp_GetValue @global
|
; @routine FilterKeepUp_GetValue @global
|
||||||
;
|
;
|
||||||
; @param Y pointer to filter data
|
; @param Y pointer to filter data
|
||||||
; @return R16 value
|
; @return R17:R16 value
|
||||||
; @clobbers none
|
; @clobbers none
|
||||||
|
|
||||||
|
FilterKeepUp_SetRestartValue:
|
||||||
|
std Y+FILTER_KEEPUP_OFFS_RESTARTVALUE_LOW, r16
|
||||||
|
std Y+FILTER_KEEPUP_OFFS_RESTARTVALUE_HIGH, r17
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine FilterKeepUp_GetValue @global
|
||||||
|
;
|
||||||
|
; @param Y pointer to filter data
|
||||||
|
; @return R16 value
|
||||||
|
; @clobbers R17
|
||||||
|
|
||||||
FilterKeepUp_GetValue:
|
FilterKeepUp_GetValue:
|
||||||
ldd r16, Y+FILTER_KEEPUP_OFFS_TIMER
|
ldd r16, Y+FILTER_KEEPUP_OFFS_TIMER_LOW
|
||||||
tst r16
|
ldd r17, Y+FILTER_KEEPUP_OFFS_TIMER_HIGH
|
||||||
|
or r16, r17
|
||||||
breq FilterKeepUp_GetValue_end
|
breq FilterKeepUp_GetValue_end
|
||||||
ldi r16, 1
|
ldi r16, 1
|
||||||
FilterKeepUp_GetValue_end:
|
FilterKeepUp_GetValue_end:
|
||||||
@@ -78,8 +97,10 @@ FilterKeepUp_GetValue_end:
|
|||||||
FilterKeepUp_SetValue:
|
FilterKeepUp_SetValue:
|
||||||
tst r16
|
tst r16
|
||||||
breq FilterKeepUp_SetValue_end
|
breq FilterKeepUp_SetValue_end
|
||||||
ldd r17, Y+FILTER_KEEPUP_OFFS_RESTARTVALUE
|
ldd r17, Y+FILTER_KEEPUP_OFFS_RESTARTVALUE_LOW
|
||||||
std Y+FILTER_KEEPUP_OFFS_TIMER, r17
|
std Y+FILTER_KEEPUP_OFFS_TIMER_LOW, r17
|
||||||
|
ldd r17, Y+FILTER_KEEPUP_OFFS_RESTARTVALUE_HIGH
|
||||||
|
std Y+FILTER_KEEPUP_OFFS_TIMER_HIGH, r17
|
||||||
FilterKeepUp_SetValue_end:
|
FilterKeepUp_SetValue_end:
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
@@ -90,14 +111,15 @@ FilterKeepUp_SetValue_end:
|
|||||||
; @routine FilterKeepUp_Every100ms @global
|
; @routine FilterKeepUp_Every100ms @global
|
||||||
;
|
;
|
||||||
; @param Y pointer to filter data
|
; @param Y pointer to filter data
|
||||||
; @clobbers r16
|
; @clobbers r24, r25
|
||||||
|
|
||||||
FilterKeepUp_Every100ms:
|
FilterKeepUp_Every100ms:
|
||||||
ldd r16, Y+FILTER_KEEPUP_OFFS_TIMER
|
ldd r24, Y+FILTER_KEEPUP_OFFS_TIMER_LOW
|
||||||
tst r16
|
ldd r25, Y+FILTER_KEEPUP_OFFS_TIMER_HIGH
|
||||||
breq FilterKeepUp_Every100ms_end
|
sbiw r25:r24, 1
|
||||||
dec r16
|
brcs FilterKeepUp_Every100ms_end
|
||||||
std Y+FILTER_KEEPUP_OFFS_TIMER, r16
|
std Y+FILTER_KEEPUP_OFFS_TIMER_LOW, r24
|
||||||
|
std Y+FILTER_KEEPUP_OFFS_TIMER_HIGH, r25
|
||||||
FilterKeepUp_Every100ms_end:
|
FilterKeepUp_Every100ms_end:
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
|
|||||||
Reference in New Issue
Block a user