Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

radeksss 08 Jan 2017 22:47 900 3
  • #1
    radeksss
    Level 2  
    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 ;)
    Code: c
    Log in, to see the code
  • #2
    excray
    Level 40  
    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.
  • #4
    trol.six
    Level 31  
    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.