diff --git a/MainModesArbiter.c b/MainModesArbiter.c index 7c6502a..5741b64 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -99,22 +99,22 @@ int32_t CalculateSteps2(float Rout_required, int32_t *CountStep100, int32_t *Cou if (Rout < 0) Rout = 0; // Приоритет 1: Сначала заполняем точный резистор (10 кОм) - *CountStep10 = (int32_t)(Rout / Step10 + 0.5f); + *CountStep10 = (int32_t) (Rout / Step10 + 0.5f); if (*CountStep10 > 255) *CountStep10 = 255; if (*CountStep10 < 0) *CountStep10 = 0; // Вычисляем остаток после установки точного резистора - float R_remaining = Rout - (float)(*CountStep10) * Step10; + float R_remaining = Rout - (float) (*CountStep10) * Step10; if (R_remaining < 0) R_remaining = 0; // Приоритет 2: Остаток добираем грубым резистором (100 кОм) - *CountStep100 = (int32_t)(R_remaining / Step100 + 0.5f); + *CountStep100 = (int32_t) (R_remaining / Step100 + 0.5f); if (*CountStep100 > 255) *CountStep100 = 255; if (*CountStep100 < 0) *CountStep100 = 0; // Опционально: корректировка для минимизации общей ошибки // Если грубый резистор перекомпенсировал, уменьшаем точный - float R_actual = R_constL + (float)(*CountStep100) * Step100 + (float)(*CountStep10) * Step10; + float R_actual = R_constL + (float) (*CountStep100) * Step100 + (float) (*CountStep10) * Step10; float R_error = R_actual - Rout_required; // Если ошибка положительная и большая, пробуем скорректировать @@ -122,9 +122,9 @@ int32_t CalculateSteps2(float Rout_required, int32_t *CountStep100, int32_t *Cou // Уменьшаем точный резистор на 1 шаг (*CountStep10)--; // Пересчитываем грубый резистор - R_remaining = Rout - (float)(*CountStep10) * Step10; + R_remaining = Rout - (float) (*CountStep10) * Step10; if (R_remaining < 0) R_remaining = 0; - *CountStep100 = (int32_t)(R_remaining / Step100 + 0.5f); + *CountStep100 = (int32_t) (R_remaining / Step100 + 0.5f); if (*CountStep100 > 255) *CountStep100 = 255; } @@ -186,7 +186,7 @@ static _Noreturn void Mma_Thread(tMma *env) { */ int32_t step100, step10; - +/* // Использование float R_ab_100k = 100000.0f; float R_ab_10k = 10000.0f; @@ -204,7 +204,7 @@ static _Noreturn void Mma_Thread(tMma *env) { float Rwa_desired_10k = (float)CountStep10 * Step10; step10 = calc_D_for_Rwa(Rwa_desired_10k, R_ab_10k, Rw_typ); - +*/ /* float Rwa_desired2_100k = 000.00f - R_const; step100 = calc_D_for_Rwa(Rwa_desired2_100k, R_ab_100k, Rw_typ); @@ -215,12 +215,13 @@ static _Noreturn void Mma_Thread(tMma *env) { float required_resistance = 8000.00f; -// CalculateSteps2(required_resistance, &step100, &step10); -// CalculateSteps(required_resistance, &step100, &step10); + CalculateSteps(required_resistance, &step100, &step10); step100 = 255 - step100; step10 = 255 - step10; + result = setSpiSensor(&env->sensorSPI, SENSOR_TYPE_A, SENSOR_ADR_1, step100); + result = setSpiSensor(&env->sensorSPI, SENSOR_TYPE_A, SENSOR_ADR_2, step10); asm("nop");