Gdybym robił taki układ to zrobiłbym analizę czasową sygnałów wejściowych (min, max, oczekiwana dokładność) i pewnie poszukałbym uC z 3 elastycznymi modułami do przechwytywania wartości licznika i wsparciem debugera (np. JTAG).
Jeżeli to musi być AVR, to niech będzie mała Xmega16A4. Jeżeli to PIC, to mały dsPIC33FJ32MC202 (bo nie lubię PIC16). Jeżeli ARM, to mały Cortex-M0, np.STM32F030K6. Wnętrze się liczy, a nie wygląd
Nie ma dla mnie większego znaczenia rodzina czy obudowa, ale peryferia pozwalające czy ułatwiające realizację funkcji. Ty chcesz mierzyć czas między zdarzeniami, więc najkorzystniej użyć do tego sprzętu: licznik + zatrzaski. Jedyna funkcja kontrolera to przygotowanie peryferiów, podawanie informacji o aktualnym stanie eksperymentu oraz oczekiwanie na zakończenie pomiaru. Ty zacząłeś od bardzo fajnego schematu, ale nie zastanowiłeś się jak bezbłędnie reagować na zdarzenia zewnętrzne, które są tutaj najważniejsze.
W ograniczonym zakresie ten układ będzie spełniał swoją funkcję, ale ten zakres może się okazać zbyt ograniczony w normalnym użytkowaniu. Sporo rzeczy trzeba zrealizować programowo, a i tak nie wyeliminujesz wszystkich ograniczeń, np. wykrywanie małych, szybkich obiektów. Gdybyś w tym układzie mógł przynajmniej przełączyć 1. i 3. czujnik na wejścia !INT0 oraz !INT1, mógłbyś znacząco poprawić działanie urządzenia. Jednak w dalszym ciągu czas będziesz mierzył programowo odczytując licznik po zdarzeniu, co jest obarczone większym błędem niż sprzętowe zatrzaśnięcie stanu. Z drugiej strony, jeżeli układ działa z rozdzielczością 1ms, a Ty masz wahadła z okresem 1 minuta, to błąd będzie pomijalny.
Ponownie mamy do czynienia z przypadkiem, gdzie najpierw dobrano uC, a teraz próbujemy dopasować kod aplikacji do niezbyt udanej architektury sprzętowej.
Ale głowa do góry

Powiedz jakie masz warunki brzegowe i spróbujemy poprawić Twoją konstrukcję, aby była dokładna i niezawodna.