Может быть есть те, кто знает или в настоящее время изучает дискретную математику и поможет?
Я пытаюсь сделать достаточно простую вещь — синтезировать автомат обработчика нажатия кнопки. Надо понять:
1. Была ли нажата ли кнопка
2. Если да, то было ли это короткое нажатие
3. Или длинное
Второй день читаю пособия и статьи (например
эту), и все никак не могу ухватить основной смысл.
Вводные: у нас есть кнопка. Она может быть нажата и не нажата. При нажатии кнопки запускается дебаунс-таймер и отмеряет интервал короткого нажатия кнопки. Если во время работы этого таймера кнопку отпустили, возвращаемя в исходное положение. Если таймер отработал и кнопка все еще нажата, запускается таймер измерения интервала длинного нажатия. Если во время работы этого таймера кнопка отпущена, фиксируем короткое нажатие и уходим в исходное состояние. И т.д.
Я сделал такую
карту переходов и выходов.
Последующее курение пособий показало, что я, похоже, неправильно понял суть входов. Т.е. вход должен быть один — x1(кнопка). Вход может быть в состоянии 0 или 1.
Дальше непонятно чем же все-таки являются таймеры — это входы или состояния? Или это вообще счетчики, инкрементирующиеся по второму входному сигналу — такту? Еще периодически встречается термин «функции возмущения», но с ними вообще ничего непонятно.
А на следующем этапе мне еще нужно будет преобразовать это в структурный автомат и синтезировать логическую схему. Мааамаааа. Помогите, пожалуйста. Хотя бы с правильным синтеза автомата Мили