Witam,
Ostatnio zainteresowało mnie pewne urządzenie, znane bardziej pod angielską nazwą jako SpeedoHealer/Speedometer Calibrator. Otóż owe urządzenie służy do powielania częstotliwości sygnałów pochodzących z czujnika prędkości i tym samym minimalizowania błędu wynikającego na przykład z wymiany kół na takie o wyższym pofilu. Pomyślałem sobie, że zamiast wydawać 300 zł, spróbuję podjąć się zadania i zbudować podobne urządzenie oparte na ATmega8. Dopiero raczkuję w programowaniu AVRów, dlatego potrzebuję pomocy. Razem z bluebookiem pana Mirka zrobiłem już multipleksowanie wyświetlacza LED, liznąłem ADC i kilka innych drobniejszych zagadnień, ale temat pomiaru okresu sygnału trochę mnie jeszcze przerasta.
Na chwilę obecną wiem jak to ma mniej więcej wyglądać. W pierwszej kolejności odbywać ma się pomiar okresu sygnału z wykorzystaniem przerwania na ICP1. Następnie chciałbym wykorzystać timer w trybie PWM do generowania sygnału o odpowiednio zmniejszonym okresie. "Zabawa" stanęła na samym początku, czyli na pomiarze okresu. Poniżej załączam to co udało mi się napisać. Czas wystąpienia dwóch zboczy narastających jest zapisywany do zmiennych czas1 i czas2. Jednak po wejściu do instrukcji warunkowej IF i wykonaniu obliczeń, wypadałoby wyzerować licznik przepełnień i przepisać wartość zmiennej czas2 do zmiennej czas1. Nie wiem w którym miejscu tego dokonać i czy w ogóle mój sposób na pomiar jest prawidłowy. Ważne jest, by mierzony był każdy okres sygnału, żaden nie może być pominięty.
Nie liczę na gotowe rozwiązanie, a na podpowiedzi, które pozwolą mi zrozumieć i samemu to napisać

język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.