Explicitly initialize all LED values in LedDriverPhase_InitLedValues before moving on to LedDriverPhase_Initialized.
This commit is contained in:
@@ -93,19 +93,20 @@ void LedSlaveDriver_Update(uint8_t ledDriverId) {
|
|||||||
break;
|
break;
|
||||||
case LedDriverPhase_InitLedControlRegisters:
|
case LedDriverPhase_InitLedControlRegisters:
|
||||||
I2cAsyncWrite(ledDriverAddress, currentLedDriverState->setupLedControlRegistersCommand, LED_CONTROL_REGISTERS_COMMAND_LENGTH);
|
I2cAsyncWrite(ledDriverAddress, currentLedDriverState->setupLedControlRegistersCommand, LED_CONTROL_REGISTERS_COMMAND_LENGTH);
|
||||||
*ledDriverPhase = LedDriverPhase_Initialized;
|
*ledDriverPhase = LedDriverPhase_InitLedValues;
|
||||||
break;
|
break;
|
||||||
case LedDriverPhase_Initialized:
|
case LedDriverPhase_InitLedValues:
|
||||||
{
|
|
||||||
#ifdef LED_DRIVER_STRESS_TEST
|
|
||||||
updatePwmRegistersBuffer[0] = FRAME_REGISTER_PWM_FIRST + *ledIndex;
|
updatePwmRegistersBuffer[0] = FRAME_REGISTER_PWM_FIRST + *ledIndex;
|
||||||
memcpy(updatePwmRegistersBuffer+1, currentLedDriverState->sourceLedValues + *ledIndex, PMW_REGISTER_UPDATE_CHUNK_SIZE);
|
memcpy(updatePwmRegistersBuffer+1, currentLedDriverState->sourceLedValues + *ledIndex, PMW_REGISTER_UPDATE_CHUNK_SIZE);
|
||||||
I2cAsyncWrite(ledDriverAddress, updatePwmRegistersBuffer, PWM_REGISTER_BUFFER_LENGTH);
|
I2cAsyncWrite(ledDriverAddress, updatePwmRegistersBuffer, PWM_REGISTER_BUFFER_LENGTH);
|
||||||
*ledIndex += PMW_REGISTER_UPDATE_CHUNK_SIZE;
|
*ledIndex += PMW_REGISTER_UPDATE_CHUNK_SIZE;
|
||||||
if (*ledIndex >= LED_DRIVER_LED_COUNT) {
|
if (*ledIndex >= LED_DRIVER_LED_COUNT) {
|
||||||
*ledIndex = 0;
|
*ledIndex = 0;
|
||||||
|
*ledDriverPhase = LedDriverPhase_Initialized;
|
||||||
}
|
}
|
||||||
#else
|
break;
|
||||||
|
case LedDriverPhase_Initialized:
|
||||||
|
{
|
||||||
uint8_t *sourceLedValues = currentLedDriverState->sourceLedValues;
|
uint8_t *sourceLedValues = currentLedDriverState->sourceLedValues;
|
||||||
uint8_t *targetLedValues = currentLedDriverState->targetLedValues;
|
uint8_t *targetLedValues = currentLedDriverState->targetLedValues;
|
||||||
|
|
||||||
@@ -147,7 +148,6 @@ void LedSlaveDriver_Update(uint8_t ledDriverId) {
|
|||||||
if (*ledIndex >= LED_DRIVER_LED_COUNT) {
|
if (*ledIndex >= LED_DRIVER_LED_COUNT) {
|
||||||
*ledIndex = 0;
|
*ledIndex = 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
LedDriverPhase_SetShutdownModeNormal,
|
LedDriverPhase_SetShutdownModeNormal,
|
||||||
LedDriverPhase_SetFrame1,
|
LedDriverPhase_SetFrame1,
|
||||||
LedDriverPhase_InitLedControlRegisters,
|
LedDriverPhase_InitLedControlRegisters,
|
||||||
|
LedDriverPhase_InitLedValues,
|
||||||
LedDriverPhase_Initialized,
|
LedDriverPhase_Initialized,
|
||||||
} led_driver_phase_t;
|
} led_driver_phase_t;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user