Init
This commit is contained in:
parent
a7aa5c8b55
commit
59db4b83e9
|
|
@ -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");
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue