Witam,
Ostatnio zacząłem się bawić RTC, i myśleć jakby to zautomatyzować aby wszystko się działo "w tle", było uniwersalne i wygodnie się tego używało. Starałem się również aby zajmował jak najmniej miejsca w pamięci, jednak to nie było moim głównym piorytetem. Biblioteka może działać i z LCD monochromatycznymi takimi jak HD44780 czy KS0108. Może również działać z kolorowymi, lub w ogóle bez wyświetlacza. Wszystko jest oparte na wskaźnikach do funkcji.
Inicjalizacja RTC odbywa się w następujący sposób :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Najpierw init przerwania zewnętrznego. Potem struktury RTC. Parametry są następujące. Wskaźnik na strukturę, lokalizacja na wyświetlaczu - szerokość i wysokość, separator czasu i wskaźnik do funkcji wyświetlającej tekst na wyświetlaczu i ustawianie kursora w odpowiednim miejscu. Dla kolorowego wyświetlacza jest tak samo, tylko dodane są parametry koloru tekstu i tła.
Możemy sobie również dodawać callback`i. W tej bibliotece są one rozbudowane. Nie ma jednego callbacka, zamiast jednego są cztery. Odpowiednio przed odczytem czasu, po odczycie czasu i analogicznie dla daty. Można zadawać sobie pytanie "po co ?". Przytoczę tutaj jeden przykład. Mamy sobie kolorowego LCD, wyświetlanie działa, jednak teksty z każdym odczytem daty i czasu brzydko się nakładają jeden na drugi. Tu z pomocą przychodzą callbacki przed odczytem. Wtedy rejestrujemy sobie callbacka, w funkcji callbacka czyścimy sobie fragment LCD aby nie usunąć reszty wyświetlacza i wszystko śmiga. Owszem, można dać czyszczenie tego fragmentu w pętli while, jednak wyświetliłby się ten tekst, minęła by chwila i za drugim obiegiem pętli while wszystko by się usunęło i byśmy mogli w ogóle nie zobaczyć tego tekstu
.
Biblioteka również umożliwia udostępnianie czasu bibliotece FatFS
Jeszcze jedna drobniutka zaleta. Chodzi mi o funkcje RTCSaveRegister. Przy użyciu enumeratora który jest już w bibliotece możemy pięknie sobie zapisywać cokolwiek chcemy do RTC. Przykład z godziną :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Niby nic, a cieszy
.
Teraz kod
PCF8583.c :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
PCF8583.h :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jeszcze jedna ważna rzecz. Jeżeli ktoś by próbował uruchomić tego libsa z Mirkowymi libsami do HD44780 to może się rozczarować że lokalizacja na LCD nie działa prawidłowo. Powodem tego jest że Mirek w funkcji lcd_locate ma najpierw wysokość potem szerokość. W mojej bibliotece ustawia się najpierw szerokość potem wysokość. Więc jak używamy tych bibliotek to trzeba odwrotnie wpisać w inicjalizacji struktury lokalizację na LCD. Najpierw wysokość potem szerokość Żeby nie było marudzenia że coś nie działa To by było chyba na tyle
Jeżeli znajdziecie jakiś błąd czy coś nie będzie działać - piszcie, postaram się pomóc