avr: use 16bit for brightness (actually, ADC only presents 10 bit).
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
brightnessDataBegin:
|
||||
brightnessTimer: .byte 1
|
||||
brightnessFlags: .byte 1
|
||||
brightnessLastValue: .byte 1
|
||||
brightnessLastValue: .byte 2
|
||||
brightnessDataEnd:
|
||||
|
||||
|
||||
@@ -98,11 +98,8 @@ Brightness_Every100ms_readValue:
|
||||
sts brightnessTimer, r16
|
||||
in r16, ADCL
|
||||
in r17, ADCH ; read value from ADC
|
||||
tst r17
|
||||
breq Brightness_Every100ms_storeValue
|
||||
ldi r16, 0xff
|
||||
Brightness_Every100ms_storeValue:
|
||||
sts brightnessLastValue, r16
|
||||
sts brightnessLastValue+1, r17
|
||||
; convert to 1/0
|
||||
lds r17, brightnessFlags
|
||||
sbr r17, (1<<BRIGHTNESS_FLAGS_VALID_BIT) ; set valid bit
|
||||
@@ -116,14 +113,15 @@ Brightness_Every100ms_storeValue:
|
||||
; @routine Brightness_GetValue @global
|
||||
;
|
||||
; @return CFLAG set if there is a value, cleared otherwise (standard api)
|
||||
; @return R16 value
|
||||
; @return R19:R18 value
|
||||
; @clobbers R16
|
||||
|
||||
Brightness_GetValue:
|
||||
lds r16, brightnessFlags
|
||||
sbrs r16, BRIGHTNESS_FLAGS_VALID_BIT
|
||||
rjmp Brightness_GetValue_retNc
|
||||
lds r16, brightnessLastValue
|
||||
lds r18, brightnessLastValue
|
||||
lds r19, brightnessLastValue+1
|
||||
sec
|
||||
ret
|
||||
Brightness_GetValue_retNc:
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
Brightness_Send:
|
||||
rcall Brightness_GetValue
|
||||
brcc Brightness_Send_end
|
||||
mov r18, r16
|
||||
clr r19
|
||||
ldi r20, 1
|
||||
clr r21
|
||||
ldi r17, VALUE_ID_BRIGHTNESS ; VALUE ID
|
||||
|
||||
Reference in New Issue
Block a user