Jachimo napisał(a):
Kolega "andrews" zaproponował nową metodę. Kod zawiera błędy ale ma potencjał.
To ciekawe, bo u mnie kompilowało się bez błędów i symulacja przebiegała prawidłowo. Nie bardzo rozumiem, skąd stwierdzenie, że kod zawiera błędy.
Jachimo napisał(a):
... zmienna "prev_ICR" nie bierze udziału w obliczeniach...
Gdyby nie brała udziału, to wynik nie byłby prawidłowy.
Jachimo napisał(a):
...zmienna "period_cycles = current_ts - prev_ts;" tak naprawdę równa się Δ(ovf_cnt)*65536 ponieważ reszta wyzeruje się...
Nie chce mi się teraz tego analizować dokładnie. Pisząc kod koncentrowałem się na tym, żeby był przejrzysty i łatwy do analizy. Nie mam jednak zbyt dużo wolnego czasu na takie zadania, więc przepraszam najmocniej, że tego zadania nie wykonałem należycie. Ale OK, nawet jeśli znalazłeś sposób, żeby skrócić obliczenia, to wcale nie oznacza, że mój kod był błędny, może co najwyżej nieco mniej optymalny (za to być może łatwiejszy do zrozumienia). Jestem za to pewien, że działał prawidłowo.
Jachimo napisał(a):
Maksymalna mierzona częstotliwość ok. 32kHz.
Ta granica może się zmniejszyć, jeśli w programie użyjesz jeszcze innych przerwań.
Jachimo napisał(a):
Taki licznik można wykorzystać jako fragment większej całości do pomiarów niskich częstotliwości a do pomiarów wyższych częstotliwości trzeba stosować inne metody.
Do pomiaru niższych częstotliwości używa się pomiaru czasu trwania okresu, do pomiaru większych częstotliwości raczej należy zliczać ilość okresów w jednostce czasu.