logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PCF8563 - błędna data i godzina po starcie, problem z inicjalizacją

nariox 19 Wrz 2016 18:24 1077 4
REKLAMA
  • #1 15941457
    nariox
    Poziom 11  
    Posty: 111
    Pomógł: 1
    Ocena: 1
    Korzystałem z dwóch różnych bibliotek do obsługi PCF8563, za każdym razem jest to samo. Za pierwszym razem, gdy uruchomię PCF-a, to nic się nie dzieje, ale gdy na chwilę odłączę zasilanie i znów załączę, to zaskakuje, ale podaje kosmiczną datę i godzinę. Po dłuższej przerwie znów nie może zaskoczyć, znów potrzebuje krótkiej przerwy i zaskakuje. Gdy już zaskoczy, to odmierza czas prawidłowo (tyka co 1 s).

    Przykładowa data i godzina:
    35:40:68
    2090:52:23

    Czy problem zatem to kwestia sprzętowa/inicjalizacja PCF-a?

    Jeżeli chodzi o zasilanie, to mam kondensator 100 nF przy zasilaniu, 22 pF przy kwarcu oraz po 4,7 kOm na SCA i SDL.

    Gdy podmienię PCF8563 na PCF8583 i wgram odpowiedni program, to układ rusza bez problemu.
  • REKLAMA
  • #2 15942634
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2206
    Pokaż schemat. Odłączenie zasilania - masz na myśli całkowite, czy PCF ciągle działą na baterii? Zobacz w bibliotece czy są maskowane nieużywane bity - to częsty problem, że programiści przyjmują, że mają one zero, podczas, gdy ich wartość jest losowa.
  • REKLAMA
  • #3 15942860
    nariox
    Poziom 11  
    Posty: 111
    Pomógł: 1
    Ocena: 1
    schemat narysowany na kartce dobrze oddaje moje połączenia. pod Vdd podaje 5V z zasilacza,sprawdzałem miernikiem jest około 5,05 V.
    PCF8563 - błędna data i godzina po starcie, problem z inicjalizacją


    Wyeliminowałem problem z niepoprawną datą. W inicjalizacji miałem dopisaną funkcję resetu(chyba nie do końca dopracowana,ale poprawie to sobie). Dodatkowo cienkie nóżki kwarcu na płytce stykowej nie zawsze przylegały i stąd niepoprawna data i godzina.Przylutowałem do dwóch gold pinów i zegarek ustawia date taką jak w programie.

    Problem pozostał na starcie:
    1.Podaje zasilanie,na ekranie pojawia się napis start i nic sie nie dzieje
    2.Odłączam na chwile zasilanie , i znów załączam(gdy poczekam zbyt długo to znów punkt 1)
    3.układ startuje i wyświetla poprawną datę i godzinę


    Zamieszam funkcje główną + procedurę inicjalizacji PCF 8563.
    Procek to atmega 32, fuse bity na 8 mhz wewnętrzny oscylator.
    Korzystam z atmel studio( w opcjach projektu zmienione taktowanie na 8 MHz)

    Funkcja główna

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Inicjalizacja PCFA: funkcja PCF8563_init:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    i kolejne funkcje :

    PCF 8563_INITINT:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Funkcja TWI_read_buf i podrzędna musza działać poprawnie, bo dobrze pokazuje zmianę czasu ,więc nie będę ich tu przytaczał
    Podobnie,skoro ustawiła się poprawna godzina, to i funkcje zapisu muszą działać poprawnie

    jedyna inna funkcja( poza wykorzystywanymi z niebieskiej książki P. Mirka), która się tu pojawia to :

    TWI_write_byte :

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Zaznaczam że przykład pochodzi z innego forum,a ja staram się go opanować,nie zaś wykorzystać w swoim projekcie
  • REKLAMA
  • #5 15942924
    nariox
    Poziom 11  
    Posty: 111
    Pomógł: 1
    Ocena: 1
    dodanie pętli opóźniającej w głównej funkcji po podaniu zasilania poskutkowało:)

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    EDIT:

    jednak spowodowane jest to pojemnością całego układu,gdzieś tego napięcia trochę zostaje , więc problem dalej pozostało


    EDIT 2:

    podpięcie baterii 1.5 V lubie jakiejkolwiek innej ,przed załączeniem zasilania ,rozwiązuje problem, po prostu ona być musi i tyle albo bardzo pojemny kondensator co ujęte jest w datasheecie
REKLAMA