spirit_1 6 February 8, 2024 Posted February 8, 2024 · Report post Добрый день Могли бы пояснить некоторые моменты касательно использования 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) это одно и тоже и можно один оставить или они содержат разные значения? Quote Share this post Link to post Share on other sites More sharing options...
sasamy 11 February 9, 2024 Posted February 9, 2024 · Report post 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 Quote Share this post Link to post Share on other sites More sharing options...
spirit_1 6 February 14, 2024 Posted February 14, 2024 · Report post On 2/9/2024 at 3:26 PM, sasamy said: в юзерспейс никогда не пользовался этим, но примеры быстро гуглятся https://developerhelp.microchip.com/xwiki/bin/view/software-tools/linux/apps-gpio-irq/#HApplication примеров очень много, проблем а том что они разные , вобщем перлопатив все это, подключив кнопку и светодиод пришел к следедующему Перед полингом надо обязательно делать рид, иначе на полинге не останавливается и первый полинг всегда пустой, т.е не зависимо от события при первом вызове функции . В остальном все стндартно по примерам Quote Share this post Link to post Share on other sites More sharing options...