wiringPiISR: нет такого файла или каталога
Я пытаюсь использовать прерывания на моем Orange Pi Plus H3. Я скачал WiringOP отсюда и установил его.
Но когда я запускаю программу, я получил сообщение:
gpio: невозможно открыть интерфейс экспорта GPIO: нет такого файла или каталога wiringPiISR: невозможно открыть /sys/class/gpio/gpio7/value: такого файла или каталога нет
Я нашел много похожих проблем, но ни одно решение не подходит мне. Например, внесите изменения в /boot/config.txt, но в моем / boot / dir у меня нет файла config.txt и т. Д.
Есть ли способы решить эту проблему?
И вот код, который я протестировал:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <wiringPi.h>
// WPi 7 to PA7, ie. Physical OPi-pin 29||WPi 8 to PA8, ie. Physical OPi-pin 31||WPi 9 to PG08 OPi-pin 32||
// WPi 10 to PA09 OPi-pin 33|| WPi 12 to PPA10 OPi-pin 35 || WPi 15 to PG06 OPi-pin 38
#define BUTTON_PIN 8
// the event counter
volatile int eventCounter = 0;
// -------------------------------------------------------------------------
void myInterrupt(void) {
eventCounter++;
}
// -------------------------------------------------------------------------
int main(void) {
// sets up the wiringPi library
if (wiringPiSetup () < 0) {
fprintf (stderr, "Unable to setup wiringPi: %s\n", strerror (errno));
return 1;
}
pinMode(BUTTON_PIN, INPUT);
pullUpDnControl (BUTTON_PIN, PUD_UP) ;
if ( wiringPiISR (BUTTON_PIN, INT_EDGE_FALLING, &myInterrupt) < 0 ) {
fprintf (stderr, "Unable to setup ISR: %s\n", strerror (errno));
return 1;
}
// display counter value every second.
while ( 1 ) {
// printf( "%d\n", eventCounter );
if (eventCounter != 0) {
system("systemctl suspend");
//printf("Error!!!");
}
eventCounter = 0;
delay( 100 ); // wait 0.1 second
}
return 0;
}
Моя система - Lubuntu 15.04, использующая модифицированное ядро Loboris.
1 ответ
Что ж. После долгого времени работы с OrangePI решение не было найдено.
Единственный способ использовать прерывания на Orange Pi - это установить Armbian. Затем установите эту версию WiringOP и, наконец, клонируйте ее: https:.//github.com/ua3nbw/gpiokey
Там будет файл wpi.c. Скомпилируйте его, используя gcc, и сделайте прерывания на выбранном вами выводе (по умолчанию - вывод 8).
К сожалению, мой Orange выключается через 5 секунд после первого прерывания. Возможно, позже я найду способ это исправить.