sk6812 now works again (at least with 1m LEDs).
This commit is contained in:
@@ -33,9 +33,6 @@ sk6812DataEnd:
|
|||||||
.cseg
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
SK6812_BEGIN:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; SK6812_Init
|
; SK6812_Init
|
||||||
@@ -92,7 +89,7 @@ SK6812_Fini:
|
|||||||
; @param r19 green value
|
; @param r19 green value
|
||||||
; @param r20 blue value
|
; @param r20 blue value
|
||||||
; @param r21 white value
|
; @param r21 white value
|
||||||
; @clobbers r23 (r16, r17)
|
; @clobbers r23 (r16, r17, r24, r25)
|
||||||
|
|
||||||
SK6812_SetAllColor:
|
SK6812_SetAllColor:
|
||||||
push r15
|
push r15
|
||||||
@@ -100,7 +97,7 @@ SK6812_SetAllColor:
|
|||||||
cli
|
cli
|
||||||
lds r23, sk6812NumLeds
|
lds r23, sk6812NumLeds
|
||||||
SK6812_SetAllColor_loop:
|
SK6812_SetAllColor_loop:
|
||||||
rcall sk6812SendQuadruple ; (r16, r17)
|
rcall sk6812SendQuadruple ; (r16, r17, r24, r25)
|
||||||
dec r23
|
dec r23
|
||||||
brne SK6812_SetAllColor_loop
|
brne SK6812_SetAllColor_loop
|
||||||
out SREG, r15
|
out SREG, r15
|
||||||
@@ -149,7 +146,7 @@ sk6812SendPattern_loop2:
|
|||||||
; @param r19 green value
|
; @param r19 green value
|
||||||
; @param r20 blue value
|
; @param r20 blue value
|
||||||
; @param r21 white value
|
; @param r21 white value
|
||||||
; @clobbers r16 (r17)
|
; @clobbers r16 (r17, r24, r25)
|
||||||
|
|
||||||
sk6812SendQuadruple:
|
sk6812SendQuadruple:
|
||||||
mov r16, r19 ; G
|
mov r16, r19 ; G
|
||||||
@@ -171,8 +168,6 @@ sk6812SendQuadruple:
|
|||||||
; @param r16 value
|
; @param r16 value
|
||||||
; @clobbers r16, r17, r24, r25
|
; @clobbers r16, r17, r24, r25
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sk6812SendByte:
|
sk6812SendByte:
|
||||||
ldi r17, 8 ; +1
|
ldi r17, 8 ; +1
|
||||||
ldi r24, (1<<SK6812_PINNUM)
|
ldi r24, (1<<SK6812_PINNUM)
|
||||||
@@ -203,7 +198,3 @@ sk6812SendByte_sendOne:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SK6812_END:
|
|
||||||
.equ MODULE_SIZE_SK6812 = SK6812_END-SK6812_BEGIN
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
; @clobbers any, -X
|
; @clobbers any, -X
|
||||||
|
|
||||||
SK6812_OnPacketReceived:
|
SK6812_OnPacketReceived:
|
||||||
adiw xh:xl, 2 ; command
|
adiw xh:xl, NETMSG_OFFS_CMD ; command
|
||||||
ld r16, X
|
ld r16, X
|
||||||
sbiw xh:xl, 2
|
sbiw xh:xl, NETMSG_OFFS_CMD
|
||||||
cpi r16, NETMSG_CMD_VALUE_SET
|
cpi r16, NETMSG_CMD_VALUE_SET
|
||||||
breq SK6812_OnPacketReceived_set
|
breq SK6812_OnPacketReceived_set
|
||||||
clc ; unexpected msg
|
clc ; unexpected msg
|
||||||
@@ -31,16 +31,20 @@ SK6812_OnPacketReceived_set:
|
|||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
SK6812_OnPacketReceived_setRGBW:
|
SK6812_OnPacketReceived_setRGBW:
|
||||||
rcall SK6812_SetAllColor ; value is in R18-R21 (r16, r17, r23)
|
push r17
|
||||||
|
push r24
|
||||||
|
push r25
|
||||||
|
rcall SK6812_SetAllColor ; value is in R18-R21 (r16, r17, r23, r24, r25)
|
||||||
|
pop r25
|
||||||
|
pop r24
|
||||||
|
pop r17
|
||||||
rjmp SK6812_OnPacketReceived_sendAck
|
rjmp SK6812_OnPacketReceived_sendAck
|
||||||
SK6812_OnPacketReceived_setNumLeds:
|
SK6812_OnPacketReceived_setNumLeds:
|
||||||
sts sk6812NumLeds, r18
|
sts sk6812NumLeds, r18
|
||||||
SK6812_OnPacketReceived_sendAck:
|
SK6812_OnPacketReceived_sendAck:
|
||||||
push xl
|
push xl
|
||||||
push xh
|
push xh
|
||||||
mov r16, r22 ; src address
|
|
||||||
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
ldi r23, NETMSG_CMD_VALUE_SET_ACK
|
||||||
clr r17
|
|
||||||
rcall Main_SendValueResponse
|
rcall Main_SendValueResponse
|
||||||
pop xh
|
pop xh
|
||||||
pop xl
|
pop xl
|
||||||
|
|||||||
Reference in New Issue
Block a user