Init
This commit is contained in:
parent
06524546a3
commit
c392b084a3
|
|
@ -20,39 +20,30 @@ const float R_const = 163.4f;
|
|||
const float Rw_typ = 00.0f; //60.0f // Типовое сопротивление движка
|
||||
const float Rw_max = 120.0f; // Максимальное (для консервативного расчета)
|
||||
|
||||
/**
|
||||
* Расчет шагов для двухкаскадного цифрового потенциометра
|
||||
* Резисторы: 100 кОм (грубый) и 10 кОм (точный)
|
||||
* Постоянное сопротивление: 171 Ом
|
||||
*
|
||||
* @param Rout_required Требуемое сопротивление в Омах
|
||||
* @param CountStep100 Указатель для сохранения шагов грубого резистора (0-255)
|
||||
* @param CountStep10 Указатель для сохранения шагов точного резистора (0-255)
|
||||
* @return 0 - успех, -1 - ошибка
|
||||
*/
|
||||
int32_t CalculateSteps(float Rout_required, int32_t *CountStep100, int32_t *CountStep10) {
|
||||
const float R_constL = 0.0f;//150.4f;
|
||||
const float R_ab_100k = 100000.0f;
|
||||
const float R_ab_10k = 10000.0f;
|
||||
const float R_w_100k = 120.0f;
|
||||
const float R_w_10k = 120.0f;
|
||||
const float R__const = R_w_100k + R_w_10k; // 150 Ом — всегда присутствует
|
||||
|
||||
if (CountStep100 == NULL || CountStep10 == NULL) {
|
||||
return -1;
|
||||
}
|
||||
const float Step100 = R_ab_100k / 256.0f; // ~390.625 Ом
|
||||
const float Step10 = R_ab_10k / 256.0f; // ~39.0625 Ом
|
||||
|
||||
const float Step100 = R_ab_100k / 256.0f;
|
||||
const float Step10 = R_ab_10k / 256.0f;
|
||||
|
||||
float Rout = Rout_required - R_constL;
|
||||
if (Rout < 0) Rout = 0;
|
||||
// Вычитаем постоянную составляющую
|
||||
float Rout = Rout_required - R__const;
|
||||
if (Rout < 0.0f) Rout = 0.0f;
|
||||
|
||||
// Расчёт грубого каскада (без вычитания R_w — он уже в R_const)
|
||||
*CountStep100 = (int32_t)(Rout / Step100);
|
||||
if (*CountStep100 > 255) *CountStep100 = 255;
|
||||
if (*CountStep100 < 0) *CountStep100 = 0;
|
||||
|
||||
// Остаток для точного каскада
|
||||
float R_tail = Rout - (float)(*CountStep100) * Step100;
|
||||
if (R_tail < 0.0f) R_tail = 0.0f;
|
||||
|
||||
if (R_tail < 0) R_tail = 0;
|
||||
|
||||
// Расчёт точного каскада с округлением
|
||||
*CountStep10 = (int32_t)(R_tail / Step10 + 0.5f);
|
||||
if (*CountStep10 > 255) *CountStep10 = 255;
|
||||
if (*CountStep10 < 0) *CountStep10 = 0;
|
||||
|
|
@ -216,11 +207,11 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
*/
|
||||
|
||||
|
||||
float required_resistance = 10440.0f;
|
||||
float required_resistance = 9282.03f;
|
||||
CalculateSteps(required_resistance, &step100, &step10);
|
||||
|
||||
step100 = 50;
|
||||
step10 = 0;
|
||||
// step100 = 50;
|
||||
// step10 = 0;
|
||||
|
||||
step100 = 255 - step100;
|
||||
step10 = 255 - step10;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include "CommandLines.h"
|
||||
#include "ArbiterCommand.h"
|
||||
#include "SpiPorts.h"
|
||||
#include "LinSensorTasks.h"
|
||||
|
||||
typedef struct {
|
||||
// Преферийные интерфесы
|
||||
|
|
@ -42,6 +43,8 @@ typedef struct {
|
|||
tTaskSerial TaskSerialUSB2;
|
||||
|
||||
|
||||
tLin5TaskSensor lin5TaskSensor;
|
||||
|
||||
tTaskReceivedSerial TaskReceivedSerialUSB1;
|
||||
tTaskReceivedSerial TaskReceivedSerialUSB2;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ void Mma_InitComIntLog(tMma *env) {
|
|||
&env->slog,
|
||||
3,
|
||||
&SERIAL_PORTS.cliVirtualPortOut_Io,
|
||||
&SERIAL_PORTS.Rs485_HalfDuplexIo,
|
||||
&SERIAL_PORTS.Rs485_USART2_HalfDuplexIo,
|
||||
&env->rtcs->rtcI0,
|
||||
SERIAL_LOGGER_SHOW_AUTHOR | SERIAL_LOGGER_SHOW_LOG_LEVEL,
|
||||
1000
|
||||
|
|
@ -97,8 +97,16 @@ static void Mma_InitSubSystems(tMma *env) {
|
|||
Task_RECEIVED_SerialUSB2_StartThread(&env->TaskReceivedSerialUSB2);
|
||||
|
||||
|
||||
|
||||
Lin_5_Init(&env->lin5TaskSensor, &env->serialPorts->LIN1_UART4_IO, &env->slog.logger);
|
||||
Lin5_StartThread(&env->lin5TaskSensor);
|
||||
|
||||
|
||||
SensorSpi_Init(&env->sensorSPI, env->spiPorts, &env->gpios->conns);
|
||||
|
||||
|
||||
|
||||
|
||||
LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "End of subsystem initialization")
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue