|
@@ -232,19 +232,19 @@ ISR(TIMERx_OVF_vect) {
|
|
|
|
|
|
|
|
|
static uint16_t cie_lightness(uint16_t v) {
|
|
|
- if (v <= ICRx / 12)
|
|
|
+ if (v <= (uint32_t)ICRx / 12)
|
|
|
{
|
|
|
return v / 9;
|
|
|
} else {
|
|
|
|
|
|
- uint32_t y = (((uint32_t)v + ICRx / 6) << 5) / (ICRx / 6 + ICRx);
|
|
|
- uint32_t out = (y * y * y * ICRx) >> 15;
|
|
|
+ uint32_t y = (((uint32_t)v + (uint32_t)ICRx / 6) << 5) / ((uint32_t)ICRx / 6 + ICRx);
|
|
|
+ uint32_t out = (y * y * y * ICRx) >> 15;
|
|
|
|
|
|
if (out > ICRx)
|
|
|
{
|
|
|
out = ICRx;
|
|
|
}
|
|
|
- return out;
|
|
|
+ return (uint16_t)out;
|
|
|
}
|
|
|
}
|
|
|
|