avr: use 16bit for brightness (actually, ADC only presents 10 bit).

This commit is contained in:
Martin Preuss
2025-08-19 23:03:43 +02:00
parent fc073696f8
commit 6bb499740d
2 changed files with 5 additions and 9 deletions

View File

@@ -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:

View File

@@ -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