Nie wiem, jak się programuje przerwania na RPi, robiłem to na PC - na starym PC/XT dało się wyciągnąć powtarzalny pomiar impulsu z rozdzielczością us, ale na zablokowanych przerwaniach (poza tym, które uruchamiał mierzony sygnał), na współczesnych, nawet niezbyt szybkich, ns pewnie jest do osiągnięcia. Ale jeśli jest obsługiwane przerwanie akurat wtedy, gdy przychodzi impuls, to się go wykryje z opóźnieniem, i część pomiarów będzie niedokładna. Pytanie, czy ten RPi4 ma 4-rdzeniowy procesor i da się ustawić używanie jednego rdzenia wyłącznie przez program, który będzie odmierzać czas? A może da się mierzyć jakoś sprzętowo, układem peryferyjnym, bez angażowania procesora w sam pomiar?
Jakaś koncepcja: szybki licznik binarny liczący "w kółko", i każdy impuls powoduje przepisanie aktualnego stanu licznika do rejestru (a jeszcze lepiej FIFO), skąd procesor może go odczytać. Pytanie, czy ten RPi ma odpowiedni licznik wbudowany, czy trzeba go dodać na zewnątrz? Wypadałoby mieć licznik np. 32-bitowy, więc składanie z prostych scalaków o średniej skali integracji (są np. 12-bitowe liczniki CD4040), to sporo układów, i może lepiej byłoby użyć jakiegoś mikrokontrolera - ale nie Arduino, tylko modułu STM32, który ma dużo większe możliwości.
Aha, i program może mierzyć czasy na wszystkich wałach naraz (jak ich jest tylko 6) - ale pożądana jest możliwość dedykowania jednego rdzenia tylko do akwizycji danych, wtedy można mieć dokładność około 0,1us (z procesorem STM32F1 - moduł w cenie klonu Arduino).
Nie znam na pamięć możliwości Raspberry Pi, ale pamiętam, że ma SPI - może tego użyć do zbierania danych? Zegar SPI będzie dbał o stabilną szybkość pobierania danych. Tylko wygodnie byłoby pakować te dane do bufora cyklicznego - żeby nie uruchamiać tego SPI za każdym razem, jak się bufor skończy.
Można jeszcze do pomiaru czasu użyć jakiegoś Time Stamp Countera (w PC jest TSC i instrukcja RDTSC, odczytuje czas z nanosekundową rozdzielczością; RPi ma coś pod inną nazwą), ale problemem jest złapanie zmiany bez opóźnienia spowodowanego ewentualnym przerwaniem - a SPI działa niezależnie od przerwań.
Aha: jak chcesz z PC generować sygnał do testowania, to może użyj portu szeregowego ustawionego na małą szybkość - powinien mieć dobrą stabilność. Tylko on daje napięcia +-12V, więc musisz je obciąć do zakresu bezpiecznego dla RPi.