2016-06-07 6 views
0

Итак, у меня есть доска BeagleBone Black, и я хочу, чтобы иметь возможность установить какой-то GPIO вывод из значения low в значение high.BBB: сигнал GPIO не будет оставаться высоким

Для этого я использую библиотеку BlackLib1 (библиотека C++, которая обеспечивает общий доступ ко всем выводам beaglebone).

Эта библиотека предоставляет класс под названием BlackGPIO, который предлагает функциональность, которую я хочу.

BlackLib::BlackGPIO NSLP_pin(BlackLib::GPIO_61, BlackLib::output, BlackLib::SecureMode); 

auto NSLP_pinMode = NSLP_pin.getValue(); 

NSLP_pin.setValue(BlackLib::low); 

Я ожидаю, что эти строки кода будет установлен сигнал от значения low к high (один сигнал low по умолчанию).

Проблема заключается в том, что сигнал идет high только около ~10ms (измеряется по объему), а после этого он снова возвращается low.

Что я делаю неправильно?

Как установить некоторый вывод GPIO на определенное значение и оставаться таким, пока я его не изменю?

[1] link

ответ

0

link указывает экспортировать контакты BBB из командной строки и установить его высоким или низким. Вы можете создать небольшую C++-функцию для отправки этих команд в ядро ​​для экспорта, включение/выключение контактов BBB. Я использую тот же метод в своем приложении C, и он отлично работает.

Пример фрагмента кода в C Включить штырь:

FILE *GPIO; 
GPIO = fopen("/sys/class/gpio/gpio65/direction", "w"); 
fseek(GPIO,0,SEEK_SET); 
fprintf(GPIO,"61"); 
fflush(GPIO); 
fclose(GPIO);