Составители:
51
2.2 Асинхронный обмен данными с программной проверкой
готовности
Асинхронный обмен с программной проверкой готовности предполагает
возможность программно оценить степень готовности элемента СВВ, к
которым происходит взаимодействие. Обычно для этих целей служит
программно доступный (через порт) регистр состояния устройства. Перед тем,
как передать данные устройству или забрать их из него, программа имеет
возможность определить, готово ли само устройство к этой
операции, прочитав
значение из порта состояния.
Простым примером может служить работа с контроллером
последовательного канала (UART) «по опросу»: перед тем, как прочитать
данные из порта данных контроллера, необходимо проверить, являются ли эти
данные результатом приема посылки и не забирались ли они программой ранее.
Проще говоря, необходимо проверить данные на достоверность. Перед
тем же,
как записывать данные для передачи в буфер контроллера, необходимо
убедиться, что в буфере есть место, т.е. что запись новых данных в буфер не
приведет к уничтожению ранее помещенных и еще не переданных данных.
Очевидно, что такой способ обмена требует дополнительных усилий со
стороны программы на опрос готовности. Потенциально
возможна ситуация
выхода устройства из строя («вечная неготовность»), поэтому необходимо
соответствующим образом строить алгоритм работы с ним, чтобы программа не
«зависала» в бесконечном цикле, дожидаясь готовности со стороны устройства
(см. рисунок).
Рис. 19. Нерекомендуемый подход к обмену с устройством
Типичный алгоритм асинхронного обмена с программным опросом
готовности (фрагмент программы) изображен на рисунке. Очевидно, такой
способ позволяет избежать ситуации «зависания» программы, а также провести
диагностику причины (длительной) неготовности устройства и установить факт
его выхода из строя.
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »
