(18-08-2018, 15:36)kaczakat napisał(a): Jeszcze raz, timers z tym attach nie są sprzętowymi przerwaniami, przerwaniami w ogóleJeśli tak, to najlepiej zrobić swoje przerwania co równiutką 1ms czy nawet 100us co da większu rozdzielczość pomiaru.
(18-08-2018, 15:36)kaczakat napisał(a): Można też wszystkie zbieranie danych i obliczenia robić przez 480ms, przeliczyć to przecież nie problem, a te 20ms poświęcić na wysyłanie na ekran i UART. Potem od nowa.To nie jest dobra droga do sukcesu. W razie zmian taki program może przestać poprawnie działać. Wystarczy, że nowsza biblioteka będzie obsługiwać LCD nie 10 a np 15ms, albo zostanie zmieniony wyświetlacz na inny typ. Takie pisanie programu to amatorszczyzna. Procedurę pomiaru należy napisać raz a dobrze z użyciem przerwań. Co by się w programie głównym nie kombinowało (zgodnie ze sztuką) procedura liczenia będzie działać poprawnie.
Oczywiście, użycie źle napisanych funkcji, zawieszających przerwania na długo, rozłoży każdy najlepszy program a tak działa 1-Wire na Arduino (na Raspberry Pi też). Na Arduino, na czas transmisji bitu, zawieszane są przerwania (nawet ok70us) biblioteki, które widziałem, zawieszają też na czas sygnału reset i presence (ok 600us) i już jest problem, gdy użyjemy przerwań od timera co 100us. Rozwiązanie jest banalnie proste, sprzętowy USART i nie trzeba zawieszać przerwań, ale Arduino to zabawka i 99% użytych uC ma jeden USART. Przez to Arduino działa (pisałem to już kiedyś) jak Windows - chcesz aby realizowało kilka zadań, użyj kilku komputerów (kilka płytek Arduino). To nie jest wina uC, bo na AVR można naprawdę cuda robić ale nie używając bibliotek Arduino.
PS
Pogrzebię w timer.h i sprawdzę jak te attach jest zrobione.