eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaRaspberry Pi i przerwaniaRaspberry Pi i przerwania
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
    From: Atlantis <m...@w...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Raspberry Pi i przerwania
    Date: Tue, 27 Dec 2016 14:06:09 +0100
    Organization: ICM, Uniwersytet Warszawski
    Lines: 24
    Message-ID: <o3tp0a$i80$1@news.icm.edu.pl>
    NNTP-Posting-Host: aadt243.neoplus.adsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit
    X-Trace: news.icm.edu.pl 1482843978 18688 83.4.97.243 (27 Dec 2016 13:06:18 GMT)
    X-Complaints-To: u...@n...icm.edu.pl
    NNTP-Posting-Date: Tue, 27 Dec 2016 13:06:18 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101
    Thunderbird/45.5.1
    X-Mozilla-News-Host: news://news.tpi.pl:119
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:710093
    [ ukryj nagłówki ]

    Pytanie zapewne z kategorii banalnych, ale nie mogę na szybko doszukać
    się odpowiedzi, a nie jestem pewien, czy w tym przypadku powinienem
    trzymać się przyzwyczajeń z mikrokontrolerów, czy jednak nie.

    Jak wiadomo jedną z najważniejszych zasad przy programowaniu na MCU jest
    jak najszybsze wychodzenie z funkcji obsługującej przerwanie - jeśli
    trzeba wykonać dłuższą partię kodu albo coś przeczekać, ustawia się
    flagę i robi to w pętli głównej programu.

    Czy ta zasada ciągle obowiązuje na Raspberry Pi? Mam kawałek kodu, który
    ma m.in. sprawdzać stan kilku przycisków i obsługiwać enkoder obrotowy.
    Po wykryciu naciśnięcia przycisku albo przekręcenia pokrętła zajdzie
    konieczność wysłania polecenia do zewnętrznego procesu, za pośrednictwem
    potoku nazwanego albo gniazda uniksowego. Mogę sobie pozwolić na
    umieszczenie tych operacji w kodzie obsługi przerwania? Jądro sobie
    poradzi z taką sytuacją, czy będę miał do czynienia z blokadą, jak na
    mikrokontrolerze?

    Jeśli takie rozwiązanie jest niedopuszczalne, w jaki sposób mogę
    wybudzić pętle główną uśpioną poleceniem sleep()? Bo z tego co widzę,
    nie dzieje się to automatycznie po wyjściu z przerwania. Mógłbym co
    prawda usypiać program na krótko i periodycznie sprawdzać stan flag, aby
    użytkownik nie zauważył opóźnień. Jednak trochę szkoda cykli procesora,
    jeśli da się to zrobić lepiej.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: