forked from Akcelerometry_drgania_WMT/PI_mikrokontroler
41 lines
3.3 KiB
Markdown
41 lines
3.3 KiB
Markdown
# Skróty, definicje, wyjaśnienia
|
||
|
||
## Deterministyczność
|
||
|
||
W kontekście systemów wbudowanych i systemów czasu rzeczywistego deterministyczność oznacza, że system jest deterministyczny, jeśli dla określonego zdarzenia wejściowego lub określonego punktu w czasie jego czas reakcji jest przewidywalny, policzalny oraz ma znane górne ograniczenie. Nie chodzi o średni czas działania, lecz o maksymalne możliwe opóźnienie, które da się zagwarantować.
|
||
|
||
## Deterministyczność nie jest binarna, bowiem można wyodrębnić
|
||
|
||
- systemy hard real-time – opóźnienia gwarantowane i policzalne;
|
||
- miękkie real-time (soft) – działa na czas, ale bez twardej gwarancji;
|
||
- systemy nierzeczywiste (non-real-time) – czyli jak się uda.
|
||
|
||
## Mikrokontrolery vs np. Raspberry Pi (system operacyjny)
|
||
|
||
Typowy mikrokontroler to kod + przerwania, albo z RTOS-em (np. FreeRTOS z priorytetami i schedulerem real-time). Nie ma tutaj dużego systemu operacyjnego, czyli brak jest setek procesów, demona logowania, schedulerów, itd. Posiada prosty model pamięci, brak stronicowania, czyli brak jest źródeł losowych opóźnień. Mozna użyć sprzętowych timerów, które dokładnie co np. 100 us uruchomią przerwanie. i w tym przerwaniu odczytają SPI (najlepiej przez DMA). Jitter jest mały i przewidywalny, rzędu kilk czy kilkunastu cykli zegara (plus to, co narzuca magistrala i obsługa przerwań). Da się to policzyć lub oszacować górne ograniczenie. Mikrokontroler też nie jest idealnie deterministyczny, ale jest wystarczająco deterministyczny i da się wyznaczyć maksymalny błąd czasowy. Z tego powodu wystarczy policzyć odstęp pomiędzy próbkami i umieścić je w pliku wynikowym, co będzie przydatne podczas analizy danych.
|
||
|
||
## jitter
|
||
|
||
Jitter to nieregularność czasowa wykonywania zdarzeń w systemie, czyli odchylenie rzeczywistych momentów wykonania od idealnie równych odstępów czasowych, jakie były zaplanowane. Można to rozumieć jako zmienność okresu lub opóźnienia względem wartości oczekiwanej:
|
||
|
||
*jitter(t)=∣Trzeczywisty(t)−Tidealny(t)∣*
|
||
|
||
gdzie:
|
||
|
||
*Tidealny* to — nominalny okres zdarzenia,
|
||
|
||
*Trzeczywisty* — rzeczywisty odstęp między kolejnymi zdarzeniami (próbkami, sygnałami, reakcjami).
|
||
|
||
Jitter mozna rozumieć jako "rozjeżdżanie się" timingu zdarzeń z ich idealnego harmonogramu. W konsekwencji nawet jeśli średnia częstotliwość lub średni czas reakcji jest poprawny, jitter oznacza błędy czasowe, które mogą psuć akwizycję danych. W praktyce każy system system posiada jakiś jitter — chodzi jednak o to, że jitter ma granicę, którą powinniśmy znać i możemy zaprojektować system tak, aby na nią reagować i aby wartość jittera była akceptowalna.
|
||
|
||
**Przykład dla naszego systemu:**
|
||
|
||
- Próbkujemy akcelerometr co 1000 us;
|
||
- Oczekiwany odstęp: 1000 us;
|
||
- Faktycznie mierzone odstępy: 1000 us, 1002 us, 997 us, 1008 us, czyli jitter to około 8 us;
|
||
- Średnia to nadal ~1000 us, ale próbki zebrane nie są równomiernie w czasie.
|
||
|
||
**Dlaczego jitter nam przeszkadza?**
|
||
|
||
- Ponieważ pogarsza jakość FFT (Fast Fourier Transform, czyli Szybkiej Transformaty Fouriera) i analizy drgań ze względu na niejednakowy krok czasowy. Może to w konsekwencji prowadzić do niestabilności w systemach sterowania, powodować błędy w pomiarach sygnałów.
|