GPIO и прерывания

Тема в разделе "Raspberry Pi", создана пользователем Maxmi, 1 апр 2016.

  1. Maxmi

    Maxmi Нуб

    Уже давно использую малину в качестве домашнего сервера. 4TB usb-disk + GPIO-кнопка+светодиод включения/выключения торрент-клиента (работает собственный демон, запускающий transmission-daemon).

    Хочется чего-то поумнее. Демон периодически опрашивает кнопку, на что тратит драгоценные ресурсы процессора. Есть ли способ ничего не делать в демоне, а лишь получить прерывание (событие), что кнопка изменила состояние (Hi/Low)?

    И да.... хотелось бы Си, но Python тоже люблю.
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

  3. Maxmi

    Maxmi Нуб

    Спасибо. У меня демон на Си написан, как раз и хотелось от главного цикла избавиться за счет прерываний. С прерыванием в нем можно будет поставить sleep (1000000), чтобы процессор не нагружал. Без прерываний приходится кнопки раз 10 в секунду оправшивать.
     
  4. joman

    joman Гик

    Пользовался Banana Pi - клон Rasberry. Так вот, там есть функция (как и в малине) wiringPiISR которая реализует прерывания, но проблема в том, что эта функция реализует их программно и вешает проц гораздо сильнее, чем опрашивание пинов в цикле в отдельном потоке с небольшими задержками.
    Если в малине, как и в банане wiringPiISR тоже откушивает процессор, то проще написать опрос пинов самому исходя из задачи.
     
  5. Maxmi

    Maxmi Нуб

    Ого! Интересная информация. Спасибо, проверим.