Помогите с алгоритмом 2 выхода 2 времени
- Войдите на сайт для отправки комментариев
День добрый.
С виду простой алгоритм но застрял на нем серьезно.
имеем 2 цифровых выхода D5, D6
1. условие одновременно в логической единице оба быть немогут, в 0 могут.
также имеем 2 времени для D5 максимально 10 секунд активное состояние, для D6 максимально 12 секунд активное состояние.
Вход в процедуру с 0 на обоих выходах.
теперь самое интересное алгоритм, точнее их подходит даже два варианта.
1. вариант
time D5 D6
1sec H L
1sec L H
2sec H L
2sec L H
.................................
.................................
10sec H L
10sec L H
10sec H L - D5 больше 10 в 1 держать нельзя, его не инкрементируем больше
11sec L H
10sec H L
12sec L H - D6 уперся во время тоже, это окончание работы.
выход.
Общее время по такому алгоритму просчитать могу, но оно никак не приблизило к решению.
2 вариант работы инкрементируем по секунде оба
time D5 D6
1sec H L
2sec L H
3sec H L
4sec L H
.................................
.................................
9sec H L
10sec L H
10sec H L
11sec L H
10sec H L
12sec L H
выход.
Алгоритмы без delay
время в левой колонке это время удержания выхода в единице, а не тайминг выполнения программы.
Буду благодарен за любые подсказки.
Для начала прочитайте и вникните в стандартный пример "Blink without delay". чтобы понять, как уйти от использования задержек в коде.
Потом посмотрите, что такое метод конечных автоматов - ваша задачка простейший пример как раз такого автомата.