Библиотека Компэла 183


Ь ///- Интерфейс с внешними устройствами

Соответствующий порт выбирается назначением OUT, DIR и IN. В зависимости от конкретного применения, могут использоваться не все протоколы. Ненуж­ные подпрограммы могут быть «закомментированы», что уменьшит размер кода. Удаление подпрограмм высокого уровня является очевидным, при этом возможно также удаление некоторых неиспользуемых подпрограмм низкого уровня.

Так как SMBus поддерживает несколько ведущих устройств на шине (multimaster) и «горячее включение» (hot-plug), это приводит к появлению ошибок. Их причинами являются занятость шины, отсутствие ведомого ус­тройства, конфликты между несколькими ведущими устройствами и помехи на шине. Программа включает обработку ошибок и флаг ошибки. При обнару­жении ошибки передача прекращается, программа выставляет флаг ошибки и возвращается из подпрограммы верхнего уровня. Пользовательская програм­ма должна проверять данный флаг для определения успешного (возвращает 1) или ошибочного (возвращает 0) завершения. Обработка события ошибки осуществляется пользовательской программой.

Основная программа включает в себя подпрограммы верхнего и нижне­го уровней и располагается отдельно от пользовательской программы. Место, где должна располагаться пользовательская программа оставлено свободным. Для передачи данных по шине SMBus, просто вызывается соответствующая подпрограмма верхнего уровня.

Примеры передачи параметров приведены в комментариях к каждой под­программе. Исходные коды приведены в приложении А. Также в приложениях приводятся демонстрационные программы, иллюстрирующие различные про­токолы и примеры работы с смарт-батареей.