# sdp-f103-carton-counter
Счетчик картона для бумажного комбината
## Подключение
* PA0 - выход компаратора, который стоит после оптотранзистора
* PB6 - выход на светодиод
* PB12 - выход на светодиод, если светодиод горит - сигнал есть и датчик заметил что он видит объект, иначе объекта он не видит
* PA10 - usart1_rx
* PA9 - usart1_tx
## Сборка и компиляция
1) открыть проект в STM32CubeMX
2) сгенерировать код под SW4STM32 IDE
3) собрать любой IDE, которая умеет работать с CMake
## Фичи
* реагирует только на 20 непрерывных импульса от компаратора
* когда от компаратора нет импульсов больше 5 периодов, программа считает что потеряла объект
* выплевывает текстом данные в usart1
* работает с modbus через usart2 (in development)
## Используемая переферия
* TIM4 (CH1) - генерация PWM на ноге PB6
* TIM2 - input capture, захват сигнала с компаратора
* TIM3 - таймер для modbus
## Регистры ModBus
Имя |
Адрес |
Доступ |
Допустимые значения |
Описание |
CONTROL |
0x0010 |
rw |
0x00-0xFF |
Регистр для управления устройством. Для включения нужных функций нужно установить соответствующие биты. См. описание регистра CONTROL. |
CNT |
0x0011 |
rw |
0-32000 |
Регистр счета, обнуляется при перезапуске устройства. Специальное значение 0xFFFF означает что регистр был переполнен. |
MIN_RECEIVE_PULSES |
0x0012 |
rw |
0-20 |
Минимальное количество импульсов, после которых считается что объект в видимой зоне |
MAX_LOST_PULSES |
0x0013 |
rw |
0-20 |
Максимальное количество импульсов, при которых объект считается вышедшим из видимой зоны. |
MIN_PULSE_WIDTH |
0x0014 |
rw |
0-5000 |
Минимальная ширина импульса, 1000 = 100% ширины. |
MAX_PULSE_WIDTH |
0x0015 |
rw |
1-5000 |
Максимальная ширина импульса, 1000 = 100% ширины. |
### Описание регистра CONTROL
Бит |
Название |
Описание |
0 |
CNT_EN |
Сигнал разрешения работы счетчика. 0 - устройство выключено, 1 - включено. |