sk6812 now works again (at least with 1m LEDs).

This commit is contained in:
Martin Preuss
2025-05-04 03:35:28 +02:00
parent 2ac090cf14
commit e6ea506a74
2 changed files with 12 additions and 17 deletions

View File

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

View File

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