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

@@ -11,121 +11,6 @@
sk6812JumpTableSendByte:
rjmp sk6812SendByte0
rjmp sk6812SendByte1
; ***************************************************************************
; type 0
.macro SK6812_SENDBIT0
sk6812SendBit: ; 0 1
rol r16 ; +1 +1
brcs sk6812SendBit_send1 ; +1 +2
; send 0
nop ; +1
sbi SK6812_PORT, SK6812_PINNUM ; +2
nop ; +1
nop ; +1
cbi SK6812_PORT, SK6812_PINNUM ; +2
; nop ; +1
nop ; +1
rjmp sk6812SendBit_end ; +2
sk6812SendBit_send1:
; send 1
sbi SK6812_PORT, SK6812_PINNUM ; +2
nop ; +1
nop ; +1
nop ; +1
cbi SK6812_PORT, SK6812_PINNUM ; +2
nop ; +1
nop ; +1
nop ; +1
sk6812SendBit_end: ; 13 13
.endmacro
; ---------------------------------------------------------------------------
; @routine sk6812SendByte0
;
; Sends a byte to the LED strip
; @param r16 byte
; @clobbers r16 (r24, r25)
sk6812SendByte0:
SK6812_SENDBIT0
SK6812_SENDBIT0
SK6812_SENDBIT0
SK6812_SENDBIT0
SK6812_SENDBIT0
SK6812_SENDBIT0
SK6812_SENDBIT0
SK6812_SENDBIT0
ret
; @end
; ***************************************************************************
; type 1
.macro SK6812_SENDBIT1
lsl r16 ; +1
brcs l_sendOne ; +1 if false, +2 if branch taken
; send ZERO
nop ; +1
out SK6812_PORT, r25 ; +1 HIGH
nop ; +1
nop ; +1
nop
out SK6812_PORT, r24 ; +1
nop ; +1
rjmp l_end ; +2
l_sendOne:
out SK6812_PORT, r25 ; +1 HIGH
nop ; +1
nop ; +1
nop ; +1
nop ; +1
nop ; +1
out SK6812_PORT, r24 ; +1
nop ; +1
l_end:
.endmacro
; ---------------------------------------------------------------------------
; @routine sk6812SendByte1
;
; Sends a byte to the LED strip
; @param r16 byte
; @clobbers r16, r24, r25
sk6812SendByte1:
ldi r24, 0
ldi r25, (1<<SK6812_PINNUM)
SK6812_SENDBIT1
SK6812_SENDBIT1
SK6812_SENDBIT1
SK6812_SENDBIT1
SK6812_SENDBIT1
SK6812_SENDBIT1
SK6812_SENDBIT1
SK6812_SENDBIT1
ret
; @end
rjmp sk6812SetAllColor0 ; new BTF 1m and 5m stripes
; rjmp sk6812SetAllColor1 ; old BTF 1m and 5m stripes