Zegar RTC, czyli precyzyjne odmierzanie czasu #moduł

Posted by

RTC – (Real Time Clock) zegar czasu rzeczywistego. Czasem potrzebujemy wykonywać określone zadanie co jakiś czas, więc ustawiamy sobie Timer w Atmedze, obsługujemy go przerwaniami i gotowe. Ale co gdy chcemy ten czas odmierzać precyzyjnie? Z dokładnością co do milisekund. Pojawia się problem. Możemy ustawić preskalery oraz dzielniki w przerwaniach i dojść do zadowalającego pomiaru, lecz jest na to znacznie lepszy i prostszy sposób.

Do rozwiązania wykorzystujemy Timer2 w trybie asynchronicznym. Obsługujemy go w przerwaniu które jest wywoływane równo co jedną sekundę. Jako elementy montażowe: kwarc 32.768kHz na TOSC1 i TOSC2 oraz równolegle kondensator 22pF.

Podsumowanie:

  1. Gotowego moduły lutował nie będę, ponieważ są potrzebne tylko dwa elementy, więc lutowanie czegokolwiek było by bez sensu.

Plany na przyszłość:

  1. Dodanie baterii CR2032, albo super kondensatora, uniezależnić zegar od źródła zasilania, oraz usprawnić oprogramowanie aby układ się usypiał dla zaoszczędzenia prądu.

Pytania do wyjaśnienia:

  1. Czy musi być Timer2? Czy może być inny timer który obsługuj tryb asynchroniczny?
  2. Ile uC obsługuje to rozwiązanie (kod) ? [atmega16, ]
  3. Czy preskaler jest potrzebny, skoro niezależnie od ustawionej wartości Timer2 wywołuje się równo co 1 sekundę?

Źródła i linki:

Spis treściGitHubEagle

print

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *