PCF8583 i problem z odczytem roku.

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
karlos79
-
Posty: 23
Rejestracja: 14 lip 2005, 22:16
Lokalizacja: z nienacka

PCF8583 i problem z odczytem roku.

Post autor: karlos79 » 18 mar 2008, 14:42

Witam
Mam problem z zapisem i odczytem roku w RTC.
W internecie nie znalazłem dobrego rozwiązania tego problemu.
Czy ktoś może mi wyjaśnić najlepiej na przykładach o co chodzi z tym maskowaniem i rozszyfrowywaniem bitów odczytanych z PCF.
Zależy mi na łopatologicznym wyjaśnieniu problemu.
Pozdrawiam
P.S
Program piszę w bascom 8051.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 18 mar 2008, 20:25

Tu masz wszystko dokładnie opisane

Awatar użytkownika
karlos79
-
Posty: 23
Rejestracja: 14 lip 2005, 22:16
Lokalizacja: z nienacka

Post autor: karlos79 » 19 mar 2008, 16:55

Witam
Widzisz tak sie składa, że te materiały już mam i nigdzie nie jest napisane jak odczytać numer roku. Dokładniej to jak wyciągnąć dwa bity z całego bajtu i co później zrobić z tym.
Pozdrawiam

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 20 mar 2008, 1:32

Rok zapisywany jest w bajcie pod adresem 5 na dwóch najstarszych bitach, więc wystarczy odczytać cały bajt, przesunąć jego zawartość o 6 pozycji w prawo i mamy rok.
W tym RTC zapisywany jest rok tylko na 2 bitach, więc zlicza lata tylko w zakresie 0-3, aby mieć pełną datę musimy sami coś wykombinować, np. wykorzystując wolne komórki pamięci (adresy 16 i następne).
Aby zapisać rok musimy postąpić odwrotnie, czyli zsumować nasz zapis roku (0-3) - przesunięty o 6 bitów w lewo z dniem miesiąca zapisanym w BCD.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 20 mar 2008, 9:53

Znalazlem na innych forach podobne tematy ale prosciej rzecz biorąc to przypisujesz kazdej z 4 cyfr jakis rok i zapisujesz w wolnej pamieci np. dla cyfry 0 przypisujesz 8 (2008) w pamieci i potem dodajesz tylko 2000 albo jakos podobnie a tu masz link:

http://www.elektroda.pl/rtvforum/topic381439.html

Pozdrowienia :wink:

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 20 mar 2008, 10:12


Awatar użytkownika
karlos79
-
Posty: 23
Rejestracja: 14 lip 2005, 22:16
Lokalizacja: z nienacka

Post autor: karlos79 » 20 mar 2008, 11:07

Witam
Problem już jest rozwiązany.
Rozwiązanie okazało sie banalne w swojej prostocie :)
Poprosiłem o pomoc kolegę, który jest programistą, ale nie ma za bardzo pojęcia o mikrokontrolerach :)
Po prostu programy pisze na PC i tworzy strony internetowe.
Mimo to wspólnie wykombinowaliśmy procedurkę zapisu i odczytu danych do PCF i obliczania prawidłowego roku.
Wszystkie te materiały do których podaliście mi linki już znam, nawet udało mi się wcześniej czytać rok z RTC- tylko nie bylem tego pewien.
Dopiero z kolegą doszliśmy do tego, że moje procedury działały i brakowało tylko konwersji.
Podsumowując:
Problem został już rozwiązany.
Mimo to dziękuję wam za odzew i chęć niesienia pomocy.
Gorąco pozdrawiam.

ODPOWIEDZ