Программирование МК тоже может требовать временной передачи управления, при ожидании срабатывания таймера, например.
Если основная программа ожидает срабатывание синхронизатора, в это время может отображаться информация на индикаторах, или опрашиваться клавиатура, или приниматься сообщение.
Мы пока обходились без указаний на конкретный обработчик в схеме на Драконе, исправляя непосредственно текст, но это, конечно, не удобно.
Возможно вариантом стало бы присоединение к иконке таймера новой иконы, указывающей, какая подпрограмма будет запускаться синхронизатором во время ожидания заданного временного порога. В приведенных примерах в синхронизаторе выражение "А = 1000" означает, что "Ждем до 1000 мс от начала отсчета".
Например, можно опрашивать порты и выставлять флаги, или даже продолжить выполнение программы, доустановив значение таймера до значения синхронизатора. Таким образом можно определять все синхронизаторы, срабатывающие по данному таймеру.
Вложение:
Комментарий к файлу: Синхронизация по таймеру с опросом клавиатуры
Снимок4.GIF [ 20.21 КБ | Просмотров: 6580 ]
Чтобы не было путаницы с прямой линией, можно "Вставку" к "Таймеру" присоединять пунктиром.
Вложение:
Комментарий к файлу: "Вставка" с пунктиром
Снимок4_2.gif [ 20.19 КБ | Просмотров: 6579 ]
Возможен еще вариант, когда мы явно задаем псевдо-ветку для синхронизатора.
Вложение:
Комментарий к файлу: Синхронизатор с псевдо-веткой
Снимок5.GIF [ 31.82 КБ | Просмотров: 6579 ]
В принципе, псевдо-ветку можно тоже пунктиром рисовать.
Присоединение псевдо-ветки немного перегружает диаграмму, но зато позволяет подстраивать каждый синхронизатор индивидуально.
Необходимо определиться, каким способом правильнее, с т.з. эргономики, осуществлять данную операцию. Предлагаю его выбрать коллегиально, и именно этот способ мы и будем использовать в дальнейшем в нашей практике. Хотя, на мой взгляд, все приведенные варианты достаточно информативны и эргономичны.