sk6812: minor reorganizing. works now with newer BTF LED stripes.

This commit is contained in:
Martin Preuss
2026-03-26 21:07:22 +01:00
parent 02a43398a9
commit 66bc71b2bd
4 changed files with 261 additions and 175 deletions

View File

@@ -19,8 +19,8 @@
.equ SK6812_MODE_AUTO = 2
.equ SK6812_TYPE_BTF_NEW = 0
.equ SK6812_TYPE_NUM = 1
.equ SK6812_TYPE_BTF_TYPE1 = 0 ; new BTF stripes
.equ SK6812_TYPE_NUM = 1
.equ SK6812_DEFAULT_ONTIME = 300 ; 30secs
@@ -295,6 +295,7 @@ sk6812SetState_off:
#if 0
; ---------------------------------------------------------------------------
; @routine sk6812SendPattern
;
@@ -323,6 +324,7 @@ sk6812SendPattern_loop2:
brne sk6812SendPattern_loop1
ret
; @end
#endif
@@ -335,35 +337,14 @@ sk6812SendPattern_loop2:
; @param r19 green value
; @param r20 blue value
; @param r21 white value
; @clobbers r23 (r16, r17, r24, r25)
; @clobbers r23 (r16)
sk6812SetAllColor:
push zl
push zh
rcall sk6812GetJumpTableEntryForCurrentType
brcc sk6812SetAllColor_done
sbi SK6812_DDR, SK6812_PINNUM ; set to output
cbi SK6812_PORT, SK6812_PINNUM
push r15
in r15, SREG
cli
; Utils_WaitNanoSecs 80000, 0, r22 ; wait for 80us
nop
nop
lds r23, sk6812NumLeds
sk6812SetAllColor_loop:
rcall sk6812SendQuadruple ; (r16, r17, r24, r25, Z)
dec r23
brne sk6812SetAllColor_loop
; reset
cbi SK6812_PORT, SK6812_PINNUM
Utils_WaitNanoSecs 80000, 0, r22 ; wait for 80us
; sbi SK6812_PORT, SK6812_PINNUM
out SREG, r15
pop r15
icall
sk6812SetAllColor_done:
pop zh
pop zl
@@ -390,39 +371,6 @@ sk6812GetJumpTableEntryForCurrentType_ret:
; ---------------------------------------------------------------------------
; @routine sk6812SendQuadruple
;
; Sends GRBW
; @param r18 red value
; @param r19 green value
; @param r20 blue value
; @param r21 white value
; @param Z pointer to jumptable entry for SendByte function (called by ijmp)
; @clobbers r16 (r17, r24, r25)
sk6812SendQuadruple:
mov r16, r19 ; G
rcall sk6812SendByte ; (r16, r17, r24, r25)
mov r16, r18 ; R
rcall sk6812SendByte ; (r16, r17, r24, r25)
mov r16, r20 ; B
rcall sk6812SendByte ; (r16, r17, r24, r25)
mov r16, r21 ; W
rcall sk6812SendByte ; (r16, r17, r24, r25)
ret
; @end
sk6812SendByte:
ijmp
ret
; @end
; ---------------------------------------------------------------------------
; @routine sk6812WriteConfToEeprom
;