
Лекция № 18
13.05.2008 г
(Вне плана) Программирование взаимодействия с периферийными устройствами
Общие замечания
При программировании вычислительных задач учитываются следующие ресурсы микроконтроллера (МК):
Система команд.
Формат данных.
Необходимый объем ОЗУ (RAM-память) и ПЗУ (ROM-память).
Программирование вычислительных задач относится к прикладному программному обеспечению.
Программирование взаимодействия с периферийными устройствами (ПУ) — системное программирование — требует учета дополнительных ограничений. Самым существенным является время.
Время реакции на внешние сигналы.
Время решения задачи управления ПУ.
Как известно взаимодействие МК с ПУ осуществляется с помощью интерфейсов. При этом различают:
Конструкторские и схемотехнические требования к интерфейсам.
Логические требования (требования к программированию).
Требования 1 сформулированы в руководящих технических материалах — РТМ — (справочниках по данным типам микросхем) и должны выполняться неукоснительно.
Остановимся на требованиях 2.
Задачей системного программиста является обеспечение логической части интерфейса, которая по существу заключается в выдаче и приеме последовательностей двоичных кодов в определенном масштабе времени и в зависимости от выполнения тех или иных условий.
Кратко перечислим возможные требования к логической части интерфейса:
Двоичные коды могут передаваться:
параллельно — разные биты одновременно по разным проводам,
последовательно — все биты по одному проводу.
Последовательная передача может начинаться с младшего или со старшего бита.
Для экономии времени может осуществляться дуплексная связь, обеспечивающая одновременную передачу и прием по разным линиям связи.
Одно из взаимодействующих устройств должно быть определено как ведущее, другое — как ведомое.
Должна быть обеспечена проверка принимаемых сигналов на соответствие контрольным кодам (ведомое устройство) и выдача контрольных кодов (ведущее устройство).
В случае обнаружения сбоев при приеме программа ведомого устройства должна запрашивать повторную выдачу информации.
Для уменьшения количества линий связей может использоваться мультиплексирование, обеспечивающее обмен с несколькими устройствами по одним и тем же проводникам.
Сеанс связи со стороны ведущего устройства должен начинаться с выдачи адреса ведомого устройства.
В ответ на принятый адрес соответствующее этому адресу ведомое устройство должно выдать ведущему сигнал готовности к сеансу и т.д.
Обо всем этом должен позаботиться системный программист.
Пример
Рассмотрим измерительный канал с микроконтроллером (МК).
Один из возможных алгоритмов обработки — фильтрация:
.
Время выполнения
алгоритма Та
можно найти,
если знать время выполнения каждой
команды
этого алгоритма:
Говорят, что
программа выполняется в реальном
масштабе времени,
если
.
Очевидно, что
тактовая частота МК
,
должна существенно превосходить частоту
дискретизации
,
.
Ориентировочно
.
В математической
логике доказывается, что алгоритм любой
сложности может быть реализован с
использованием простейших арифметических
операций (+,-,*,/), а также операций сдвига
и пересылки. Причем вычисление одного
отсчета выходной последовательности
осуществляется за конечное число шагов.
Однако это не означает практическую
пригодность алгоритма. Важнейшим
фактором является время выполнения.
Пусть время вычисления одного выходного
отсчета
составляет
секунды. Если это отсчет речевого
сигнала, то написанная нами процедура
бесполезна. Если это отсчет температуры
окружающей среды от датчика температуры,
то наша процедура с лихвой удовлетворит
любого метеоролога.
Таким образом, определяющим свойством процедуры является ее способность вычислить выходной отсчет за реальное время.