Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 18:10


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 29 sty 2021, o 17:25 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

Cześć,

przerobiłem cały cykl Mirka (YouTube) dotyczący RTC i scalaka PCF8583. Sam posiadam układ PCF8563, podłączony do uC ATmega644P. Po drobnych modyfikacjach kodu (włączenie przerwania na wyjściu INT w PCF8563) udało mi się uruchomić układ, nawiązać połączenie, ustawić i odczytać godzinę, ale mam problem z datą. Domyślam się, że jest to kwestia innych niż w PCF8583 rejestrów, w których przechowywany jest rok oraz sposobu jego przechowywania.

Korzystam z bibliotek I2C/TWI z Bluebook'a.

Mogę zarówno ustawić, jak i bezproblemowo odczytać godzinę na ekranie LCD.

Problem:
- używając funkcji set_rtc_date( &datetime, 2015,14,2 ); na ekranie uzyskuję efekt: -325.14.02, który czasem losowo przechodzi w efekt: -325.04.02

Poniżej przedstawiam ciało obu funkcji, odpowiedzialnych za datę (ustawianie i pobieranie):

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Załączam również fragment dokumentacji scalaka PCF8563. Proszę o pomoc w modyfikacji kodu, tak aby usprawnić ustawianie i pobieranie / wyświetlanie daty. Z góry dziękuję.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2021, o 21:23 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

mtbchn napisał(a):
Domyślam się, że jest to kwestia innych niż w PCF8583 rejestrów, w których przechowywany jest rok oraz sposobu jego przechowywania.

No ale zobacz, piszesz że "domyślasz" się więc wydawać by się mogło, że nawet nie zajrzałeś do noty PDF, a jeśli będą (i są) różnice no to jak możesz się spodziewać, że w taki sam sposób jak z BB odczytasz czy zapiszesz rok?

A tu niespodzianka - na końcu sam prezentujesz ładnie i konkretny wycinek noty PDF, który prezentuje te rejestry do przechowywania czasu i daty w twoim scalaku.

Masz podane tam bardzo wyraźnie w którym rejestrze tzn pod jakim adresem przechowywany jest rok, i co więcej masz tam też przecież jak byk napisane, że rok trzymany jest jako liczba w zakresie 0-99 a ty tymczasem w kodzie niefrasobliwie zapisujesz sobie i odczytujesz nie dość, że sposobem z Bluebooka dla PCF8583 czyli pod jego adresy i wręcz bity - to na dodatek próbujesz zapisywać rok w postaci liczby która jest większa niż 99 - tak czy nie ?

------------------------ [ Dodano po: 3 minutach ]

a nie - jednak nie - ty w ogóle wykorzystałeś nadrzędną moją jakąś funkcję z poradnika set_rtc_date() która później dzieli zapis roku w specyficzny sposób tak aby zapisać wprawdzie rok jako liczbę dwubajtową ale wykorzystując do tego jeszcze wolną pamięć RAM w PCF8583 poza kilkoma bitami gdzie końcówkę roku można przechowywać tylko jako liczbę od 0-4

to jest kompletne nieporozumienie .... proponuję ci wrócić na chwilę do Bluebooka i zobaczyć jak wygląda taka podstawowe podejście do zapisu / odczytu z PCF8583 - z wyjaśnieniem właśnie rejestrów itp - żebyś wiedział co i gdzie trzeba sobie zmienić.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2021, o 21:33 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

mirekk36 napisał(a):
to jest kompletne nieporozumienie .... proponuję ci wrócić na chwilę do Bluebooka i zobaczyć jak wygląda taka podstawowe podejście do zapisu / odczytu z PCF8583 - z wyjaśnieniem właśnie rejestrów itp - żebyś wiedział co i gdzie trzeba sobie zmienić.



Tak uczynię. Widzę, że rok zapisany jest pod adresem 0x08 w postaci dwuliczbowej (od 0 do 99, czyli tak jak w DS3231). Tylko stanąłem w miejscu, usiłując przerobić funkcję set_rtc_date(). Przestudiuję raz jeszcze BB.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2021, o 23:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

mtbchn napisał(a):
Widzę, że rok zapisany jest pod adresem 0x08 w postaci dwuliczbowej

Nie - rok jest zapisywany jako JEDNA liczba a jej możliwe do przyjęcia wartości to od 0 do 99. Wszystko zapisane na jednym bajcie i bez żadnego kodowania BCD, więc prościej się nie da.
Dlatego myślę że jak zajrzysz do BB i przejrzysz opis sposobu zapisu do starszej wersji PCF'a to sporo ci to da. W szczególności jeśli na początek napiszesz sobie własną funkcję to swojego scalaka do zapisu daty i czasu. Na razie pomiń tą funkcję z poradnika w ogóle ok?

Jak zaczniesz pisać własne ustawianie czasu i daty to pokaż tu - wtedy łatwiej będzie ci szybko pomóc ok?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2021, o 13:10 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

mirekk36 napisał(a):
mtbchn napisał(a):
Widzę, że rok zapisany jest pod adresem 0x08 w postaci dwuliczbowej

Nie - rok jest zapisywany jako JEDNA liczba a jej możliwe do przyjęcia wartości to od 0 do 99. Wszystko zapisane na jednym bajcie i bez żadnego kodowania BCD, więc prościej się nie da.
Dlatego myślę że jak zajrzysz do BB i przejrzysz opis sposobu zapisu do starszej wersji PCF'a to sporo ci to da. W szczególności jeśli na początek napiszesz sobie własną funkcję to swojego scalaka do zapisu daty i czasu. Na razie pomiń tą funkcję z poradnika w ogóle ok?

Jak zaczniesz pisać własne ustawianie czasu i daty to pokaż tu - wtedy łatwiej będzie ci szybko pomóc ok?



Sytuacja opanowana. Napisałem własne funkcje, zegarek pięknie działa a przy okazji zrozumiałem zasadność maskowania danych, które pobieram z poszczególnych adresów PCF8563.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2021, o 13:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

No i SUPER! o to chodziło - gratulacje ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO