This shows you the differences between two versions of the page.
| ru:software:homelab:library:pin [2013/08/14 23:37] – создано eduardtlmk | ru:software:homelab:library:pin [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Выводы входов/ | ||
| - | |||
| - | Библиотека выводов предназначена для оптимизации дигитальных выводов входа/ | ||
| - | |||
| - | Назначая физическую шину (порт) вывода и индекс только один раз и в одном месте, можно легко поменять программу в случае физических изменений. Например, | ||
| - | |||
| - | ===== Типы данных ===== | ||
| - | |||
| - | * **//pin//** \\ Структурный тип данных для удержания регистров вывода и битовой маски. Переменные типа //pin// константны и их следует инициализировать в начале программы. Для облегчения инициализации существует макрофункция //PIN//, первый параметр которой – это обозначение шины (заглавная латинская буква A, B, C, итд.) и второй номер вывода (0-7). | ||
| - | |||
| - | ===== Функции ===== | ||
| - | |||
| - | * **//void pin_setup_output(pin pin)//** \\ Установка вывода выходом. Параметры: | ||
| - | * //pin// - Переменная вывода. | ||
| - | * **//void pin_setup_input(pin pin)//** \\ Установка вывода входом без резистора // | ||
| - | * //pin// - Переменная вывода. | ||
| - | * **//void pin_setup_input_with_pullup(pin pin)//** \\ Установка вывода входом с резистором // | ||
| - | * //pin// - Переменная вывода. | ||
| - | * **//void pin_set(pin pin)//** \\ Установка выходного вывода высоким. Параметры: | ||
| - | * //pin// - Переменная вывода. | ||
| - | * **//void pin_clear(pin pin)//** \\ Установка выходного вывода в низкое положение. Параметры: | ||
| - | * //pin// - Переменная вывода. | ||
| - | * **//void pin_toggle(pin pin)//** \\ Инвертирование положения выходного вывода. Низкое положение меняется на высокое и наоборот. Параметры: | ||
| - | * //pin// - Переменная вывода. | ||
| - | * **//void pin_set_to(pin pin, bool value)//** \\ Установка выходного вывода в желаемое положение с помощью параметра. Параметры: | ||
| - | * //pin// - Переменная вывода. | ||
| - | * //value// - Переменная значения // | ||
| - | * **//bool pin_get_value(pin pin)//** \\ Считывание положения входного вывода и возвращение функцией. Параметры: | ||
| - | * //pin// - Переменная вывода. | ||
| - | * Возвращает значение //true// или //false//. | ||
| - | * **//bool pin_get_debounced_value(pin pin)//** \\ Считывание положения входного вывода через противодребезговый фильтр выключателя и его возвращение. Фильтрация происходит минимально за 8 ms и максимально за 100 ms, в зависимости от того, как быстро закончится дребезг выключателя. Если оно не закончится через 100 ms, функция возвратит //false//. Функция использует программную паузу из библиотеки задержек функций. Параметры: | ||
| - | * //pin// - Переменная вывода. | ||
| - | * Возвращает значение //true// или //false//. | ||
| - | |||
| - | ===== Пример ===== | ||
| - | |||
| - | Пример того, как сделать значение одного вывода зависимым от другого. В программе выводу PC3 присваивается обратное выводу PC0 значение: | ||
| - | |||
| - | <code c> | ||
| - | #include < | ||
| - | |||
| - | pin output_pin = PIN(C, 3); | ||
| - | pin input_pin = PIN(C, 0); | ||
| - | |||
| - | int main(void) | ||
| - | { | ||
| - | bool value; | ||
| - | |||
| - | // Установка вывода выходом | ||
| - | pin_setup_output(output_pin); | ||
| - | |||
| - | // Установка вывода входом с помощью резистора pull-up | ||
| - | pin_setup_input_with_pullup(input_pin); | ||
| - | |||
| - | // Бесконечный цикл | ||
| - | while (true) | ||
| - | { | ||
| - | // Считывание значения входного вывода | ||
| - | value = pin_get_value(input_pin); | ||
| - | |||
| - | // Присвоение обратного значения выходному выводу | ||
| - | pin_set_to(output_pin, | ||
| - | } | ||
| - | } | ||
| - | </ | ||