| 260 |
Kevin |
1 |
#include "defines.h"
|
|
|
2 |
#include "TLC59116.h"
|
|
|
3 |
#include "I2C2.h"
|
|
|
4 |
|
|
|
5 |
void TLC59116_Init(void) {
|
|
|
6 |
uint8_t buffer[25];
|
|
|
7 |
|
|
|
8 |
buffer[0] = TLC59116_AUTO_INCR_ALL | 0x00; // Register Select
|
|
|
9 |
buffer[1] = TLC59116_AUTO_INCR_ALL | 0x00; // MODE1
|
|
|
10 |
buffer[2] = 0x00; // MODE2
|
|
|
11 |
buffer[3] = 0x00; // PWM0
|
|
|
12 |
buffer[4] = 0x00; // PWM1
|
|
|
13 |
buffer[5] = 0x00; // PWM2
|
|
|
14 |
buffer[6] = 0x00; // PWM3
|
|
|
15 |
buffer[7] = 0x00; // PWM4
|
|
|
16 |
buffer[8] = 0x00; // PWM5
|
|
|
17 |
buffer[9] = 0x00; // PWM6
|
|
|
18 |
buffer[10] = 0x00; // PWM7
|
|
|
19 |
buffer[11] = 0x00; // PWM8
|
|
|
20 |
buffer[12] = 0x00; // PWM9
|
|
|
21 |
buffer[13] = 0x00; // PWM10
|
|
|
22 |
buffer[14] = 0x00; // PWM11
|
|
|
23 |
buffer[15] = 0x00; // PWM12
|
|
|
24 |
buffer[16] = 0x00; // PWM13
|
|
|
25 |
buffer[17] = 0x00; // PWM14
|
|
|
26 |
buffer[18] = 0x00; // PWM15
|
|
|
27 |
buffer[19] = 0xFF; // GRPPWM (maximum brightness)
|
|
|
28 |
buffer[20] = 0x00; // GRPFREQ (not used)
|
|
|
29 |
buffer[21] = 0xFF; // LEDOUT0 (brightness and group dimming enabled)
|
|
|
30 |
buffer[22] = 0xFF; // LEDOUT1
|
|
|
31 |
buffer[23] = 0xFF; // LEDOUT2
|
|
|
32 |
buffer[24] = 0xFF; // LEDOUT3
|
|
|
33 |
|
|
|
34 |
I2C2_Master_Send(TLC59116_ADDR, 25, buffer);
|
|
|
35 |
uint8_t result;
|
|
|
36 |
do {
|
|
|
37 |
result = I2C2_Get_Status();
|
|
|
38 |
} while (!result);
|
|
|
39 |
}
|
|
|
40 |
|
| 270 |
Kevin |
41 |
//void TLC59116_Write(uint8_t led, uint8_t brightness) {
|
|
|
42 |
// uint8_t buffer[2];
|
|
|
43 |
//
|
|
|
44 |
// buffer[0] = led + 0x02; // Register Select
|
|
|
45 |
// buffer[1] = brightness;
|
|
|
46 |
//
|
|
|
47 |
// I2C2_Master_Send(TLC59116_ADDR, 2, buffer);
|
|
|
48 |
// uint8_t result;
|
|
|
49 |
// do {
|
|
|
50 |
// result = I2C2_Get_Status();
|
|
|
51 |
// } while (!result);
|
|
|
52 |
//}
|
| 260 |
Kevin |
53 |
|
| 270 |
Kevin |
54 |
void TLC59116_Write_All(LED_VALUES *values) {
|
| 260 |
Kevin |
55 |
uint8_t buffer[17];
|
|
|
56 |
|
| 270 |
Kevin |
57 |
buffer[0] = TLC59116_AUTO_INCR_ALL | TLC59116_REG_PWM0; // Register Select
|
|
|
58 |
buffer[1] = values->w[0];
|
|
|
59 |
buffer[2] = values->w[1];
|
|
|
60 |
buffer[3] = values->w[2];
|
|
|
61 |
buffer[4] = values->w[3];
|
|
|
62 |
buffer[5] = values->w[4];
|
|
|
63 |
buffer[6] = values->w[5];
|
|
|
64 |
buffer[7] = values->w[6];
|
|
|
65 |
buffer[8] = values->w[7];
|
|
|
66 |
buffer[9] = values->w[8];
|
|
|
67 |
buffer[10] = values->w[9];
|
|
|
68 |
buffer[11] = values->w[10];
|
|
|
69 |
buffer[12] = values->w[11];
|
|
|
70 |
buffer[13] = values->w[12];
|
|
|
71 |
buffer[14] = values->w[13];
|
|
|
72 |
buffer[15] = values->w[14];
|
|
|
73 |
buffer[16] = values->w[15];
|
| 260 |
Kevin |
74 |
|
|
|
75 |
I2C2_Master_Send(TLC59116_ADDR, 17, buffer);
|
|
|
76 |
uint8_t result;
|
|
|
77 |
do {
|
|
|
78 |
result = I2C2_Get_Status();
|
|
|
79 |
} while (!result);
|
|
|
80 |
}
|
|
|
81 |
|
|
|
82 |
void TLC59116_Write_BC(uint8_t brightness) {
|
|
|
83 |
uint8_t buffer[2];
|
|
|
84 |
|
|
|
85 |
buffer[0] = TLC59116_REG_GRPPWM; // Register Select
|
|
|
86 |
buffer[1] = brightness;
|
|
|
87 |
|
|
|
88 |
I2C2_Master_Send(TLC59116_ADDR, 2, buffer);
|
|
|
89 |
uint8_t result;
|
|
|
90 |
do {
|
|
|
91 |
result = I2C2_Get_Status();
|
|
|
92 |
} while (!result);
|
|
|
93 |
}
|