Poznajemy biblioteki - przerwania

Poznajemy biblioteki - przerwania

Wśród podstawowego zestawu bibliotek na pewno znajdziemy TimerOne – bibliotekę uruchamiającą przerwania. Jest to rzecz prosta, a niezwykle przydatna. Czym są w ogóle przerwania? Jak sama nazwa wskazuje, to proces przerywający wykonywanie programu i przekierowujący wątek we wcześniej wybrane miejsce. Proces ten może być inicjowany różnymi wydarzeniami: pojawieniem się napięcia w wybranym miejscu, zakończeniem jakiegoś procesu (na przykład wysyłania komunikatu) czy – i w tym wypadku TimerOne jest przydatny – odliczeniem pewnego przedziału czasu.

Naturalnym więc będzie wykorzystanie tej biblioteki do utworzenia bloku czynności cyklicznie powtarzających się, przede wszystkim różnego rodzaju zegarów czy sterowań wyświetlaczami, które muszą być odświeżane w równych odstępach czasu. Przykład takiego rozwiązania opisałem w cyklu artykułów o budowie budzika.

Jak się obsługuje bibliotekę TimerOne? Najprościej – należy ją dołączyć do projektu, a w sekcji setup dopisać wartość czasu wywołującego przerwanie oraz adres, w który program zostanie przekierowany.

#include <TimerOne.h>  // Biblioteka obsługi przerwań.
void setup() {
  Timer1.initialize(1000000);          // Ustaw licznik na sekundę.
  Timer1.attachInterrupt(przerwanie);  // Włącz przerwanie z określeniem miejsca lądowania.
}

Maksymalny czas odmierzany może wynosić ponad 8 sekund (dokładnie 8388480 mikrosekund). Minimalny – jedną mikrosekundę. Dodatkowo biblioteka może generować sygnał PWM na pinie 9 lub 10 z dokładnością dziesięciobitową jak również zawieszać swoje działanie. Przy pisaniu przerwań należy pamiętać o tym, by kod wykonujący się podczas trwania przerwania zmieścił się w ramce czasowej, zostawiając rezerwy dla reszty programu. O metodzie obliczania tych rezerw pisałem w wymienionej wcześniej serii artykułów.

Płytka edukacyjna TME-EDU-ARD-2Płytka edukacyjna TME-EDU-ARD-2Sprawdź tutaj

Przeczytaj również

Nasi partnerzy

TMETech Master EventTME EducationPoweredby
Copyright © 2025 arduino.pl