Когда можно обойтись
без ОСрВ для МК?
Конечно же, если вам необходимо разра‑
ботать простейшее устройство, например
индикатор температуры, который будет вы‑
полнять две функции: опрос датчика и ин‑
дикацию на 7‑сегментный светодиодный
индикатор, то применение ОСРВ в таком
устройстве будет непозволительным расто‑
чительством и приведет, в конечном счете,
к удорожанию устройства.
В этом случае можно применить один
из «традиционных» для МК способов орга‑
низации многозадачности. Прежде всего, это
циклический алгоритм (round robin) [3], ког‑
да программист помещает все задачи в тело
бесконечного цикла. При этом на подпро‑
граммы, реализующие задачи, накладывают‑
ся следующие ограничения:
1. Подпрограмма не должна содержать ци‑
клов ожидания наступления какого‑либо
события, например прерывания.
2. Подпрограмма должна лишь проверять,
наступило ли событие, и как можно бы‑
стрее передавать управление следующей
подпрограмме, то есть завершать свое вы‑
полнение.
3. Подпрограмма должна сохранять свое те‑
кущее состояние (например, в статической
или глобальной переменной) до следую‑
щего вызова.
Таким образом, каждая задача представля‑
ется в виде конечного автомата. Дальнейшее
развитие эта идея получила в SWITCH‑тех‑
нологии программирования [4, 5].
Резюме
Итак, применение ОСРВ оправдано в слу‑
чае использования достаточно мощного МК
при разработке сложного устройства с мно‑
жеством функций, например:
1. Опрос датчиков.
2. Интерфейс с пользователем (простейшие
клавиатура и дисплей).
3. Выдача управляющего воздействия.
4. Обмен информацией по нескольким вну‑
трисхемным шинам I
2
C, SPI, 1Wire и др.
5. Обмен информацией с внешними устрой‑
ствами по интерфейсам RS‑232C, RS‑485,
CAN, Ethernet, USB и др.
6. Реализация высокоуровневых протоко‑
лов, например TCP/IP, ProfiBus, ModBus,
CANOpen и др.
7. Поддержка Flash‑накопителей и, соответ‑
ственно, файловой системы.
Достарыңызбен бөлісу: |