Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C] Atmega32 - licznik czasu - opóźnienie

radeksss 08 Sty 2017 22:47 597 3
  • #1 08 Sty 2017 22:47
    radeksss
    Poziom 1  

    Witam, mam problem z dokładnością licznika czasu. Licznik ma mierzyć czas pomiędzy pojawieniem się napięcia większego od 512 na pinie PA7 a pojawieniem się zbocza narastającego na INT0. Licznik zlicza setne sekundy i sekundy. Późni się około 10 sekund na minutę. Korzystam z Atmegi32 o taktowaniu 8MHz. Wynik wyświetlam na wyświetlaczu. Napiecię na pin PA7 pobieram z czujnika ACS712. Jestem początkujący w programowaniu i myślę że to napisany przeze mnie kod jest przyczyną niedokładności ;)

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 3
  • #2 08 Sty 2017 23:48
    excray
    Poziom 39  

    Jeśli korzystasz z wewnętrznego zegara 8MHz to normalne, że masz niedokładności w odliczaniu czasu. Skorzystaj z zewnętrznego kwarcu jako źródła taktowania.

    0
  • #4 10 Sty 2017 17:17
    trol.six
    Poziom 30  

    Abstrachując od tego co już zostało nadmienione, moje uwagi:

    Ile czasu zajmuje obsługa wyświetlacza? Z resztą, w jakim celu jest ona w ciągłęj pętli?

    Miało być "od >512" a to: if (wynik > 512) robi to że "gdy >512". A więc wypada pamiętać zdarzenie.

    Innymy słowy, np: całą obsługe licznika przenieść na przerwania, a LCD i główną obsługe (np stan gotowości) zostawić w pętli.

    0
  Szukaj w 5mln produktów