avr: move timing control from ma_light to sk6812.
This allows for better control over the LED strip. We can now trigger the LED strip externally (e.g. by setting a new RGBW value).
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine SK6812_OnPacketReceived @global
|
||||
;
|
||||
; @clobbers any, -X
|
||||
; @clobbers any, !X
|
||||
|
||||
SK6812_OnPacketReceived:
|
||||
ldi zl, LOW(sk6812MsgTable*2)
|
||||
@@ -24,40 +24,42 @@ SK6812_OnPacketReceived:
|
||||
|
||||
sk6812SetValueRGBW:
|
||||
rcall SK6812_SetRGBW ; value is in R18-R21 (R16, R17, X)
|
||||
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||
sec
|
||||
ret
|
||||
rcall SK6812_Trigger
|
||||
ldi r18, 1
|
||||
rcall sk6812SetState
|
||||
rjmp sk6812SetValueReturn
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
sk6812SetValueNumLeds:
|
||||
sts sk6812NumLeds, r18
|
||||
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||
sec
|
||||
ret
|
||||
rjmp sk6812SetValueReturn
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
sk6812SetValueState:
|
||||
rcall SK6812_SetState ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25)
|
||||
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||
sec
|
||||
ret
|
||||
rjmp sk6812SetValueReturn
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
sk6812SetValueMode:
|
||||
rcall SK6812_SetMode ; value is in R18 (r16, r17, r18, r19, r20, r21, r23, r24, r25)
|
||||
rjmp sk6812SetValueReturn
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
sk6812SetValueReturn:
|
||||
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
sk6812MsgTable:
|
||||
.db NETMSG_CMD_VALUE_SET, VALUE_ID_LED_RGBW_VALUE, LOW(sk6812SetValueRGBW), HIGH(sk6812SetValueRGBW)
|
||||
.db NETMSG_CMD_VALUE_SET, VALUE_ID_LED_NUMLEDS, LOW(sk6812SetValueNumLeds), HIGH(sk6812SetValueNumLeds)
|
||||
|
||||
Reference in New Issue
Block a user