avr: use sk6812 in n12 device (test case).
This commit is contained in:
@@ -148,4 +148,22 @@
|
||||
.equ OWI_PINNUM = PORTB2
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; SK6812
|
||||
|
||||
.equ SK6812_DDR = DDRA
|
||||
.equ SK6812_PORT = PORTA
|
||||
.equ SK6812_PINNUM = PORTA5
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; debug
|
||||
|
||||
.equ DEBUG_LED_DDR = DDRA
|
||||
.equ DEBUG_LED_PORT_OUT = PORTA
|
||||
.equ DEBUG_LED_PORT_IN = PINA
|
||||
.equ DEBUG_LED_PINNUM = PORTA5
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -44,28 +44,32 @@
|
||||
#define MODULES_COM_WITH_ADDR_PROTO
|
||||
;#define MODULES_LED
|
||||
#define MODULES_LED_SIMPLE
|
||||
#define MODULES_TWI_MASTER
|
||||
;#define MODULES_TWI_MASTER
|
||||
;#define MODULES_LCD
|
||||
;#define LCD_MINIMAL_FONT
|
||||
;#define MODULES_SI7021
|
||||
#define MODULES_STATS
|
||||
;#define MODULES_CNY70
|
||||
;#define MODULES_REED
|
||||
#define MODULES_OWI_MASTER
|
||||
;#define MODULES_OWI_MASTER
|
||||
;#define MODULES_DS18B20
|
||||
#define MODULES_SK6812
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; defines for modules
|
||||
|
||||
.equ VALUE_ID_SI7021_TEMP = 0x01
|
||||
.equ VALUE_ID_SI7021_HUM = 0x02
|
||||
.equ VALUE_ID_SI7021_TEMP = 0x01
|
||||
.equ VALUE_ID_SI7021_HUM = 0x02
|
||||
|
||||
.equ VALUE_ID_ADC = 0x03
|
||||
.equ VALUE_ID_REED1 = 0x04
|
||||
.equ VALUE_ID_REED2 = 0x05
|
||||
.equ VALUE_ID_ADC = 0x03
|
||||
.equ VALUE_ID_REED1 = 0x04
|
||||
.equ VALUE_ID_REED2 = 0x05
|
||||
|
||||
.equ VALUE_ID_REED_CONF = 0x81
|
||||
.equ VALUE_ID_REED_CONF = 0x81
|
||||
.equ VALUE_ID_LED_NUMLEDS = 0x82
|
||||
.equ VALUE_ID_LED_RGBW_VALUE = 0x83
|
||||
|
||||
|
||||
|
||||
@@ -171,7 +175,9 @@ firmwareStart: rjmp main
|
||||
#ifdef MODULES_DS18B20
|
||||
.include "modules/ds18b20/main.asm"
|
||||
#endif
|
||||
|
||||
#ifdef MODULES_SK6812
|
||||
.include "modules/sk6812/main.asm"
|
||||
#endif
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -252,6 +258,13 @@ timerList:
|
||||
|
||||
|
||||
systemSetSpeed:
|
||||
.if clock == 1000000
|
||||
ldi r16, (1<<CLKPCE)
|
||||
ldi r17, (1<<CLKPS1) | (1<<CLKPS0)
|
||||
out CLKPR, r16
|
||||
out CLKPR, r17
|
||||
.endif
|
||||
|
||||
.if clock == 8000000
|
||||
ldi r16, (1<<CLKPCE)
|
||||
ldi r17, 0
|
||||
@@ -262,12 +275,10 @@ systemSetSpeed:
|
||||
|
||||
|
||||
systemSetBootSpeed:
|
||||
.if clock == 8000000
|
||||
ldi r16, (1<<CLKPCE)
|
||||
ldi r17, (1<<CLKPS1) | (1<<CLKPS0)
|
||||
out CLKPR, r16
|
||||
out CLKPR, r17
|
||||
.endif
|
||||
ret
|
||||
|
||||
|
||||
@@ -395,6 +406,20 @@ onSetValueReceived:
|
||||
ret
|
||||
#endif
|
||||
onSetValueReceived_l1:
|
||||
cpi r16, VALUE_ID_LED_RGBW_VALUE
|
||||
brne onSetValueReceived_l2
|
||||
#ifdef MODULES_SK6812
|
||||
rjmp onSetRgbwValue
|
||||
#endif
|
||||
onSetValueReceived_l2:
|
||||
cpi r16, VALUE_ID_LED_NUMLEDS
|
||||
brne onSetValueReceived_l3
|
||||
#ifdef MODULES_SK6812
|
||||
rjmp onSetNumLeds
|
||||
#endif
|
||||
onSetValueReceived_l3:
|
||||
ldi r16, CPRO_CMD_VALUE_SET_NACK
|
||||
rcall CPRO_SendSetValueResponse
|
||||
clc
|
||||
ret
|
||||
|
||||
@@ -415,3 +440,35 @@ onSetReedConf:
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef MODULES_SK6812
|
||||
onSetRgbwValue:
|
||||
; get new value
|
||||
adiw xh:xl, CPRO_PACKET_VALUE_OFFS_VALUE
|
||||
ld r18, X+ ; R
|
||||
ld r19, X+ ; G
|
||||
ld r20, X+ ; B
|
||||
ld r21, X+ ; W
|
||||
sbiw xh:xl, CPRO_PACKET_VALUE_OFFS_VALUE+4
|
||||
rcall SK6812_SetAllColor
|
||||
; send ACK
|
||||
ldi r16, CPRO_CMD_VALUE_SET_ACK
|
||||
rcall CPRO_SendSetValueResponse
|
||||
sec
|
||||
ret
|
||||
|
||||
onSetNumLeds:
|
||||
; get new value
|
||||
adiw xh:xl, CPRO_PACKET_VALUE_OFFS_VALUE
|
||||
ld r16, X ; number of leds
|
||||
sbiw xh:xl, CPRO_PACKET_VALUE_OFFS_VALUE
|
||||
sts sk6812NumLeds, r16
|
||||
; send ACK
|
||||
ldi r16, CPRO_CMD_VALUE_SET_ACK
|
||||
rcall CPRO_SendSetValueResponse
|
||||
sec
|
||||
ret
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user