Опрос датчика adxl325

Обсуждаем контроллеры компании Atmel.
Ответить
Максим Пахтусов
Родился
Сообщения: 3
Зарегистрирован: Ср окт 15, 2025 21:42:15

Опрос датчика adxl325

Сообщение Максим Пахтусов »

Товарищи, прошу помощи у опытных коллег программистов!

Пишу программу на atmega168 для опроса датчика adxl325 (акселерометр). Сталкиваюсь вот с какой проблемой:
При попытке прочиать данные по модбас, значение rms_mc (среднеквадротичное) почему то скачет! При этом значение dc_const_mc считается как надо!
Но самое главная магия в функции main:
static uint8_t axis = 0;
val = measuring_xyz(adc_channels[axis]);
val_const[axis] = measuring_xyz(adc_channels[axis]);

sum[axis] += val_const[axis];
sum_sq[axis] += (uint32_t)val * (uint32_t)val;
count_0[axis]++;

Вот у меня значение с датчика по оси x к примеру val_const[axis] = 470, и в модбасе 470. По идее sum должен быть = 470 * 67 = 31490, а у меня это значение скачет как попало от 5000...25000, какая то чушь! То же самое касается sum_sq = (470 * 470) * 67 = 14 800 300 должно быть, а он мне какую то чушь с пляшущими цифрами выдаёт. Может я в глаза долблюсь!? Ничего не понимаю....И ещё вопрос в догонку, я реализовал самописный модбас, хотелось бы узнать это адекватная реализация вообще? Ну он вроде работает, но у меня нет четкого понимания, что это правильная реализация без потонциальных ошибок. Дипсик говорит, что вроде все окей и модбас хороший и код корректный, но эту проблему ни он не я решить можем)) Вот..Буду благодарен за напутствие. Проект во вложении.
Вложения
adc_3.rar
(86.48 КБ) 4 скачивания
Реклама
Ответить

Вернуться в «AVR»