avr: use sk6812 in n12 device (test case).
This commit is contained in:
@@ -148,4 +148,22 @@
|
|||||||
.equ OWI_PINNUM = PORTB2
|
.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_COM_WITH_ADDR_PROTO
|
||||||
;#define MODULES_LED
|
;#define MODULES_LED
|
||||||
#define MODULES_LED_SIMPLE
|
#define MODULES_LED_SIMPLE
|
||||||
#define MODULES_TWI_MASTER
|
;#define MODULES_TWI_MASTER
|
||||||
;#define MODULES_LCD
|
;#define MODULES_LCD
|
||||||
;#define LCD_MINIMAL_FONT
|
;#define LCD_MINIMAL_FONT
|
||||||
;#define MODULES_SI7021
|
;#define MODULES_SI7021
|
||||||
#define MODULES_STATS
|
#define MODULES_STATS
|
||||||
;#define MODULES_CNY70
|
;#define MODULES_CNY70
|
||||||
;#define MODULES_REED
|
;#define MODULES_REED
|
||||||
#define MODULES_OWI_MASTER
|
;#define MODULES_OWI_MASTER
|
||||||
;#define MODULES_DS18B20
|
;#define MODULES_DS18B20
|
||||||
|
#define MODULES_SK6812
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; defines for modules
|
; defines for modules
|
||||||
|
|
||||||
.equ VALUE_ID_SI7021_TEMP = 0x01
|
.equ VALUE_ID_SI7021_TEMP = 0x01
|
||||||
.equ VALUE_ID_SI7021_HUM = 0x02
|
.equ VALUE_ID_SI7021_HUM = 0x02
|
||||||
|
|
||||||
.equ VALUE_ID_ADC = 0x03
|
.equ VALUE_ID_ADC = 0x03
|
||||||
.equ VALUE_ID_REED1 = 0x04
|
.equ VALUE_ID_REED1 = 0x04
|
||||||
.equ VALUE_ID_REED2 = 0x05
|
.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
|
#ifdef MODULES_DS18B20
|
||||||
.include "modules/ds18b20/main.asm"
|
.include "modules/ds18b20/main.asm"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef MODULES_SK6812
|
||||||
|
.include "modules/sk6812/main.asm"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
@@ -252,6 +258,13 @@ timerList:
|
|||||||
|
|
||||||
|
|
||||||
systemSetSpeed:
|
systemSetSpeed:
|
||||||
|
.if clock == 1000000
|
||||||
|
ldi r16, (1<<CLKPCE)
|
||||||
|
ldi r17, (1<<CLKPS1) | (1<<CLKPS0)
|
||||||
|
out CLKPR, r16
|
||||||
|
out CLKPR, r17
|
||||||
|
.endif
|
||||||
|
|
||||||
.if clock == 8000000
|
.if clock == 8000000
|
||||||
ldi r16, (1<<CLKPCE)
|
ldi r16, (1<<CLKPCE)
|
||||||
ldi r17, 0
|
ldi r17, 0
|
||||||
@@ -262,12 +275,10 @@ systemSetSpeed:
|
|||||||
|
|
||||||
|
|
||||||
systemSetBootSpeed:
|
systemSetBootSpeed:
|
||||||
.if clock == 8000000
|
|
||||||
ldi r16, (1<<CLKPCE)
|
ldi r16, (1<<CLKPCE)
|
||||||
ldi r17, (1<<CLKPS1) | (1<<CLKPS0)
|
ldi r17, (1<<CLKPS1) | (1<<CLKPS0)
|
||||||
out CLKPR, r16
|
out CLKPR, r16
|
||||||
out CLKPR, r17
|
out CLKPR, r17
|
||||||
.endif
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@@ -395,6 +406,20 @@ onSetValueReceived:
|
|||||||
ret
|
ret
|
||||||
#endif
|
#endif
|
||||||
onSetValueReceived_l1:
|
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
|
clc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -415,3 +440,35 @@ onSetReedConf:
|
|||||||
#endif
|
#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