Выводы входов/выходов

Библиотека выводов предназначена для оптимизации дигитальных выводов входа/выхода AVR. Цель библиотеки облегчить использование выводов AVR. Пользователь может создать в программе переменную для желаемого вывода, которой присваивается физический адрес вывода при помощи специальной макрофункции. Затем при помощи переменной можно вызвать различные функции для смены направления и состояния вывода и их чтения.

Назначая физическую шину (порт) вывода и индекс только один раз и в одном месте, можно легко поменять программу в случае физических изменений. Например, если сначала индикатором используется один LED, можно с помощью простого изменения программы начать использовать другой LED. Из переменных выводом можно создавать массивы, например для составления шин.

Типы данных

  • pin
    Структурный тип данных для удержания регистров вывода и битовой маски. Переменные типа pin константны и их следует инициализировать в начале программы. Для облегчения инициализации существует макрофункция PIN, первый параметр которой – это обозначение шины (заглавная латинская буква A, B, C, итд.) и второй номер вывода (0-7).

Функции

  • void pin_setup_output(pin pin)
    Установка вывода выходом. Параметры:
    • pin - Переменная вывода.
  • void pin_setup_input(pin pin)
    Установка вывода входом без резистора pull-up. Параметры:
    • pin - Переменная вывода.
  • void pin_setup_input_with_pullup(pin pin)
    Установка вывода входом с резистором pull-up. Параметры:
    • 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 - Переменная значения true/false.
  • 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 значение:

#include <homelab/pin.h>
 
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, !value);
	}
}
ru/software/homelab/library/pin.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0