• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Niedokładność pomiarowa - problem z odczytywaniem impulsow
#46
Użyj trybu CTC dla timera 1.
Jak już używasz (co nie jest rozsądne) zliczania od okeślonej wartości do przepełnienia, to licznik powinieneś ładować w przerwaniu na jego początku a nie końcu. Przy małym podzielniku trzeba by jednak uwzględnić czas jaki minie zanim wejdziesz w przerwania (czas ten jest nieznany. bo może akurat obsługiwane jest inne przerwanie) i czas jaki jest poświęcony na odłożenie rejestrów na stos (ten czas mozna obliczyć). Można tez dać wstawkę ASM i załadować rejestr TCNT1 zaraz po wejściu w przerwanie (niestety musisz w ASM odłożyć co nieco na stos).
Po co więc kombinować, użyj CTC.
W przerwaniu zmieniaj sobie jakieś GPIO i sprawdź czy masz przerwanie dokładnie co 500ms.
Z obliczeń w przerwaniu zrób tylko coś w rodzaju:
Kod:
zliczne impulsy = speedImpulseCounter;
speedImpulseCounter = 0;

Resztę obliczeń rób w petli głównej.
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Niedokładność pomiarowa - problem z odczytywaniem impulsow - przez es2 - 26-08-2018, 13:49

Skocz do:


Przeglądający: 2 gości