mirror of https://github.com/rusefi/bldc.git
Updated upload command to also work with latest openocd, gamma correction for ws2811 LEDs
This commit is contained in:
parent
8dc8ffe2c7
commit
c3dec34d72
2
Makefile
2
Makefile
|
@ -275,7 +275,7 @@ build/$(PROJECT).bin: build/$(PROJECT).elf
|
|||
# Program
|
||||
upload: build/$(PROJECT).bin
|
||||
#qstlink2 --cli --erase --write build/$(PROJECT).bin
|
||||
openocd -f interface/stlink-v2.cfg -c "set WORKAREASIZE 0x2000" -f target/stm32f4x_stlink.cfg -c "program build/$(PROJECT).elf verify reset"
|
||||
openocd -f board/stm32f4discovery.cfg -c "program build/$(PROJECT).elf verify reset" -c "reset_config trst_only combined"
|
||||
|
||||
debug-start:
|
||||
openocd -f stm32-bv_openocd.cfg
|
||||
|
|
|
@ -120,8 +120,8 @@ static msg_t led_thread(void *arg) {
|
|||
|
||||
while (state == state_last && rev_last == reverse_leds && !HAS_FAULT()) {
|
||||
if ((chTimeNow() / (CH_FREQUENCY / 2)) % 2) {
|
||||
set_led_wrapper(WS2811_LED_NUM / 2 - 1, 0xFF9900);
|
||||
set_led_wrapper(WS2811_LED_NUM / 2, 0xFF9900);
|
||||
set_led_wrapper(WS2811_LED_NUM / 2 - 1, COLOR_ORANGE);
|
||||
set_led_wrapper(WS2811_LED_NUM / 2, COLOR_ORANGE);
|
||||
} else {
|
||||
set_led_wrapper(WS2811_LED_NUM / 2 - 1, COLOR_BLACK);
|
||||
set_led_wrapper(WS2811_LED_NUM / 2, COLOR_BLACK);
|
||||
|
@ -143,8 +143,8 @@ static msg_t led_thread(void *arg) {
|
|||
|
||||
while (state == state_last && rev_last == reverse_leds && !HAS_FAULT()) {
|
||||
if ((chTimeNow() / (CH_FREQUENCY / 2)) % 2) {
|
||||
set_led_wrapper(0, 0xFF9900);
|
||||
set_led_wrapper(WS2811_LED_NUM - 1, 0xFF9900);
|
||||
set_led_wrapper(0, COLOR_ORANGE);
|
||||
set_led_wrapper(WS2811_LED_NUM - 1, COLOR_ORANGE);
|
||||
} else {
|
||||
set_led_wrapper(0, COLOR_BLACK);
|
||||
set_led_wrapper(WS2811_LED_NUM - 1, COLOR_BLACK);
|
||||
|
|
11
ws2811.c
11
ws2811.c
|
@ -22,6 +22,7 @@
|
|||
* Author: benjamin
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include "ws2811.h"
|
||||
#include "stm32f4xx_conf.h"
|
||||
#include "ch.h"
|
||||
|
@ -38,6 +39,7 @@
|
|||
// Private variables
|
||||
static uint16_t bitbuffer[BITBUFFER_LEN];
|
||||
static uint32_t RGBdata[LED_BUFFER_LEN];
|
||||
static uint8_t gamma_table[256];
|
||||
|
||||
// Private function prototypes
|
||||
static uint32_t rgb_to_local(uint32_t color);
|
||||
|
@ -73,6 +75,11 @@ void ws2811_init(void) {
|
|||
bitbuffer[BITBUFFER_LEN - BITBUFFER_PAD - 1 + i] = 0;
|
||||
}
|
||||
|
||||
// Generate gamma correction table
|
||||
for (int i = 0;i < 256;i++) {
|
||||
gamma_table[i] = (int)roundf(powf((float)i / 255.0, 1.0 / 0.45) * 255.0);
|
||||
}
|
||||
|
||||
#if WS2811_USE_CH2
|
||||
palSetPadMode(GPIOB, 7,
|
||||
PAL_MODE_ALTERNATE(GPIO_AF_TIM4) |
|
||||
|
@ -224,5 +231,9 @@ static uint32_t rgb_to_local(uint32_t color) {
|
|||
uint32_t g = (color >> 8) & 0xFF;
|
||||
uint32_t b = color & 0xFF;
|
||||
|
||||
r = gamma_table[r];
|
||||
g = gamma_table[g];
|
||||
b = gamma_table[b];
|
||||
|
||||
return (g << 16) | (r << 8) | b;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue