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
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
.
Biblioteka również umożliwia udostępnianie czasu bibliotece FatFS
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
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
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
.
Teraz kod
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
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 ![Pokazuje język :P](https://forum.atnel.pl/images/smilies/icon_razz.gif)
To by było chyba na tyle
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
Jeżeli znajdziecie jakiś błąd czy coś nie będzie działać - piszcie, postaram się pomóc
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)