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;
|
if (Rout < 0) Rout = 0;
|
||||||
|
|
||||||
// Приоритет 1: Сначала заполняем точный резистор (10 кОм)
|
// Приоритет 1: Сначала заполняем точный резистор (10 кОм)
|
||||||
*CountStep10 = (int32_t)(Rout / Step10 + 0.5f);
|
*CountStep10 = (int32_t) (Rout / Step10 + 0.5f);
|
||||||
if (*CountStep10 > 255) *CountStep10 = 255;
|
if (*CountStep10 > 255) *CountStep10 = 255;
|
||||||
if (*CountStep10 < 0) *CountStep10 = 0;
|
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;
|
if (R_remaining < 0) R_remaining = 0;
|
||||||
|
|
||||||
// Приоритет 2: Остаток добираем грубым резистором (100 кОм)
|
// Приоритет 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 > 255) *CountStep100 = 255;
|
||||||
if (*CountStep100 < 0) *CountStep100 = 0;
|
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;
|
float R_error = R_actual - Rout_required;
|
||||||
|
|
||||||
// Если ошибка положительная и большая, пробуем скорректировать
|
// Если ошибка положительная и большая, пробуем скорректировать
|
||||||
|
|
@ -122,9 +122,9 @@ int32_t CalculateSteps2(float Rout_required, int32_t *CountStep100, int32_t *Cou
|
||||||
// Уменьшаем точный резистор на 1 шаг
|
// Уменьшаем точный резистор на 1 шаг
|
||||||
(*CountStep10)--;
|
(*CountStep10)--;
|
||||||
// Пересчитываем грубый резистор
|
// Пересчитываем грубый резистор
|
||||||
R_remaining = Rout - (float)(*CountStep10) * Step10;
|
R_remaining = Rout - (float) (*CountStep10) * Step10;
|
||||||
if (R_remaining < 0) R_remaining = 0;
|
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;
|
if (*CountStep100 > 255) *CountStep100 = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -186,7 +186,7 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int32_t step100, step10;
|
int32_t step100, step10;
|
||||||
|
/*
|
||||||
// Использование
|
// Использование
|
||||||
float R_ab_100k = 100000.0f;
|
float R_ab_100k = 100000.0f;
|
||||||
float R_ab_10k = 10000.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;
|
float Rwa_desired_10k = (float)CountStep10 * Step10;
|
||||||
step10 = calc_D_for_Rwa(Rwa_desired_10k, R_ab_10k, Rw_typ);
|
step10 = calc_D_for_Rwa(Rwa_desired_10k, R_ab_10k, Rw_typ);
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
float Rwa_desired2_100k = 000.00f - R_const;
|
float Rwa_desired2_100k = 000.00f - R_const;
|
||||||
step100 = calc_D_for_Rwa(Rwa_desired2_100k, R_ab_100k, Rw_typ);
|
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;
|
float required_resistance = 8000.00f;
|
||||||
// CalculateSteps2(required_resistance, &step100, &step10);
|
CalculateSteps(required_resistance, &step100, &step10);
|
||||||
// CalculateSteps(required_resistance, &step100, &step10);
|
|
||||||
|
|
||||||
step100 = 255 - step100;
|
step100 = 255 - step100;
|
||||||
step10 = 255 - step10;
|
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");
|
asm("nop");
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue