Работа с GPIO на Debian (sunxi,Cubieboard)

Рейтинг: 3Ответов: 1Опубликовано: 01.12.2014

Недавно приобрёл Cubieboard (a10), поставил туда Debian (Cubian) с установленным gpio_sunxi, но совершенно не имел понятия, как работать с GPIO, после дня "ковыряния" у меня получилось управлять и читать данные из GPIO через команды:

echo 17 > /sys/class/gpio/export //Создаём pin с номером 17
echo out > /sys/class/gpio/gpio17_pg9/direction //Определяем его тип
echo 1 > /sys/class/gpio/gpio17_pg9/value //Включаем его
Или
cat /sys/class/gpio/gpio17_pg9/value //Читаем включен или выключен pin

Всё прекрасно работает, но есть некий датчик расчёта расстояния, принцип его работы:
Первый pin мы определяем как выход, второй - как вход.
Включаем первый pin и ждём получения сигнала на втором.
Время, через которое придет сигнал со второго pin, и есть расстояние.
Но, так как я работал через SSH, время я посчитать не могу.
Можно просто считывать\записывать в файлы это значение (/sys/class/gpio/gpio17_pg9/value) через nodejs, например, но это глупо и неточно.


Сам вопрос:

Как можно отследить получение сигнала (без тупого циклического открытия файла) и выполнить некое действие, допустим, вывести просто это время на экран?

Ответы

▲ 2Принят

можно воспользоваться механизмом inotify, ожидая изменений нужного файла и, например, записывая в какйо-нибудь файл время возникновения события.

правда, в виртуальных файловых системах sysfs/procfs это может «не сработать»:

Inotify does report some but not all events in sysfs and procfs