spirit_1 5 8 февраля Опубликовано 8 февраля · Жалоба Добрый день Могли бы пояснить некоторые моменты касательно использования poll для случая GPIO в роли IRQ Сейчас есть такой прототитп 1. chip0_poll = open ("/dev/gpiochip0", O_RDONLY); 2.rq_poll.lineoffset = PD14; // rq_poll.eventflags = GPIOEVENT_EVENT_RISING_EDGE; rq_poll.handleflags = GPIOHANDLE_REQUEST_INPUT; ret = ioctl (chip0_poll, GPIO_GET_LINEEVENT_IOCTL, rq_poll); 3. pfd.fd = rq_poll.fd; pfd.events = POLLIN | POLLPRI; //lseek( chip0_poll, 0, SEEK_SET); /* consume any prior interrupt */ ?? 4.ret = poll(&pfd, 1, time_out_ms); 5. if (pfd.revents & POLLPRI) rd = read(req.fd, &event, sizeof(event)); ?? close ( pfd.fd) ?? close(rq_poll.fd) ?? close (chip0_poll) ?? -Вопрос по черным строкам, как я понимаю надо прочитать файл после poll что бы исключить ошибочного повтора , какой размер sizeof(event) ?? Гдето 1 байт а гдето в примерах 10 -lseek надо добавлять , если да то куда? -close ( pfd.fd) close(rq_poll.fd) close (chip0_poll) это одно и тоже и можно один оставить или они содержат разные значения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 9 февраля Опубликовано 9 февраля · Жалоба On 2/8/2024 at 3:54 PM, spirit_1 said: Могли бы пояснить некоторые моменты касательно использования poll для случая GPIO в роли IRQ в юзерспейс никогда не пользовался этим, но примеры быстро гуглятся https://developerhelp.microchip.com/xwiki/bin/view/software-tools/linux/apps-gpio-irq/#HApplication Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spirit_1 5 14 февраля Опубликовано 14 февраля · Жалоба On 2/9/2024 at 3:26 PM, sasamy said: в юзерспейс никогда не пользовался этим, но примеры быстро гуглятся https://developerhelp.microchip.com/xwiki/bin/view/software-tools/linux/apps-gpio-irq/#HApplication примеров очень много, проблем а том что они разные , вобщем перлопатив все это, подключив кнопку и светодиод пришел к следедующему Перед полингом надо обязательно делать рид, иначе на полинге не останавливается и первый полинг всегда пустой, т.е не зависимо от события при первом вызове функции . В остальном все стндартно по примерам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться