-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathws2812b.h
108 lines (82 loc) · 3.93 KB
/
ws2812b.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/* -------------------------------------------------------
ws2812b.h
Header zur WS2812b Software fuer "intelligente"
Leuchtdioden
MCU : STM8S103F3
Hardware : WS2812b Leuchtdiodenreihe
Takt : interner Takt 16 MHz
Compiler : SDCC 3.5
88.05.2017 R. Seelig
------------------------------------------------------ */
/*
##################################################################
STM8S103F3P6 Pinout
##################################################################
------------
UART1_CK / TIM2_CH1 / PD4 | 1 20 | PD3 / AIN4 / TIM2_CH2 / ADC_ETR
UART1_TX / AIN5 / PD5 | 2 19 | PD2 / AIN3
UART1_RX / AIN6 / PD6 | 3 18 | PD1 / SWIM
NRST | 4 17 | PC7 / SPI_MISO
OSCIN / PA1 | 5 16 | PC6 / SPI_MOSI
OSCOUT / PA2 | 6 15 | PC5 / SPI_CLK
Vss (GND) | 7 14 | PC4 / TIM1_CH4 / CLK_CCO / AIN2
VCAP (*1) | 8 13 | PC3 / TIM1_CH3 /
Vdd (+Ub) | 9 12 | PB4 / I2C_SCL
TIM2_CH3 / PA3 | 10 11 | PB5 / I2C_SDA
-----------
*1 : Ist mit min. 1uF gegen GND zu verschalten
*/
#ifndef in_ws2812b
#define in_ws2812b
#include <stdint.h>
#include "stm8s.h"
#include "stm8_init.h"
/* #############################################################################
Benutzerangaben
############################################################################# */
/* -------------------------------------------------------------
hier angeben, an welchem Portpin der WS2812 Strang
angeschlossen ist (benutzten Port "entkommentieren"
------------------------------------------------------------- */
// Port, an dem die LED angeschlossen ist
// #define ws_porta
// #define ws_portb
// #define ws_portc
#define ws_portd
#define gpio_pin 5 // Portpin an dem die LED angeschlossen ist
// hier dann PD4
/* #############################################################################
Ende Benutzerangaben
############################################################################# */
/* -------------------------------------------------------------
Makros zur die die Registeradressen den oben gemachten
Angaben zuordnen
------------------------------------------------------------- */
#define port_mask ( 1 << gpio_pin )
#if defined ws_porta
#define ws_init() { PA_DDR |= port_mask; \
PA_CR1 |= port_mask; \
PA_CR2 &= ~(port_mask); }
#define gpio_asm 0x5000 // I/O Portadresse fuer Port A
#elif defined ws_portb
#define ws_init() { PB_DDR |= port_mask; \
PB_CR1 |= port_mask; \
PB_CR2 &= ~(port_mask); }
#define gpio_asm 0x5005 // I/O Portadresse fuer Port C
#elif defined ws_portc
#define ws_init() { PC_DDR |= port_mask; \
PC_CR1 |= port_mask; \
PC_CR2 &= ~(port_mask); }
#define gpio_asm 0x500a // I/O Portadresse fuer Port C
#elif defined ws_portd
#define ws_init() { PD_DDR |= port_mask; \
PD_CR1 |= port_mask; \
PD_CR2 &= ~(port_mask); }
#define gpio_asm 0x500f // I/O Portadresse fuer Port B
#else
#error "kein vorhandener Port des STM8S gewaehlt..."
#endif
void ws_reset(void);
void ws_showarray(uint8_t *ptr, int anz);
void ws_clrarray(uint8_t *ptr, int anz);
#endif