mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-22 16:37:58 +06:00
627ceebef3
* ws2812: Fix number of nops for AVR at 8 MHz When trying to calculate the number of nops for AVR running at 8 MHz, the value of `w3` is expected to be negative; however, because `F_CPU` is defined in tmk_core/avr.mk with the `UL` suffix, the preprocessor performs its calculations using `unsigned long`, getting a very large positive number instead of the expected negative number; this then results in generating code with a huge number of nops. Fix the broken calculations by performing a comparison before subtraction, so that the unsigned number wraparound does not occur. The keyboard which triggers the problem is `handwired/promethium`; the buggy code silently compiles, but the resulting timings would be completely wrong. * ws2812: Clean up the code after the 8 MHz fix Remove old code which was unsuccessfully trying to clamp negative w1, w2 and w3 values to 0, and set w1_nops, w2_nops and w3_nops directly. |
||
---|---|---|
.. | ||
analog.c | ||
analog.h | ||
apa102.c | ||
apa102.h | ||
glcdfont.c | ||
hd44780.c | ||
hd44780.h | ||
i2c_master.c | ||
i2c_master.h | ||
i2c_slave.c | ||
i2c_slave.h | ||
serial.c | ||
serial.h | ||
spi_master.c | ||
spi_master.h | ||
ssd1306.c | ||
ssd1306.h | ||
ws2812_i2c.c | ||
ws2812.c |