реализация алгоритмов на мк stm32f103 #3
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
По реализации функций тестирования:
Настройки алгоритма тестирования
Для таймингов есть структура SwTimings. Она содержит:
Для ключей есть структуры SwPhaseForward и SwPhaseReverse. Они содержит:
Тестирование
Тест в прямом подключении (TESTER_TestDiode_Forward)
По итогу сохраняется напряжение прямого включения диода
Тест в обратном подключении (TESTER_TestDiode_Reverse)
По итогу сохраняется скачок напряжение при обратном включении диода
Тест перехода из прямого подключении в обратное (TESTER_TestDiode_SwitchConnection)
upd: обновлены алги и настройки таймингов и ключей
ae2887acfe
Модбас
В начале программы в регистрах модбас выставляются дефолтные настройки из tester_config.h (TESTER_Set_Default_Settings)
После эти настройки подтягиваются в структуры тестера, через отдельную функцию (TESTER_UpdateSettings). Она вызывается перед каждым тестом.
Управление тестером
Тест может запускаться по кнопке или по коилу №2 StartTest.
Режим тестирования (прямое/обратное включение) выставляется в двух коилах:
Если включены оба, то будет тест перехода от прямого подлключения к обратному.
Настройка таймингов
Тайминги выставляются в регистрах модбас №0-4. В коилах модбас №16-19, можно указать какие именно тайминги использовать - миллисекундные или микросекундные. Структура таймингов такая же как и в #3 (comment)
Настройка АЦП
Настройки АЦП выставляются в регистрах модбас №5-9:
Из этого рассчитывается шаг АЦП: Adc_U_Calibr/(Adc_CalibrValue - Adc_ZeroValue)
Интерфейсы
Все связанное с интерфейсами (пока одна кнопка и светодиод) лежат в отдельной функции TESTER_InterfaceHandle. Она пока вызывается в обработчике прерываний SysTick_Handler, мб имеет смысл перенести её в кастомный таймер, чтобы вызывать пореже чем каждую миллисекунду, хз.
Для кнопок и светодиодов сделаны структуры, которые содержат порт, пин, таймаут/задержка/период, переменная для сохранения тиков.
Кнопка
Сделана функция TESTER_ReadSwichStart(), которая считывает кнопку, выжидает дребезг и перепроверяет кнопку: если нажата - возвращает 1, если нет - 0. Выжидание дребезга реализовано через запоминания времени нажатия в переменную и сравнение с текущим временем, т.к. не используется функция HAL_Delay это работает и в прерывании.
Светодиоды
Сделаны функции для включения, выключения и моргания светодиодом. Моргание также реализовано через запоминание времени предыдущего переключения и сравнения его с текущим временем. Также работает в прерывании.
Пока реализованы следующие режимы индикации:
Реализовано просто через разный период моргания, и постоянный - на самом деле период 5 мс
udp: регистры настроек модбас
ae2887acfe
Добавлен дедтайм и настройки модбас для него:
Сделана микросекундная задержка (вместо тиков for())
b0c9cb058c
ae2887acfe