Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PCF8563 - kosmiczna data i godzina, błędny start

nariox 19 Wrz 2016 18:24 552 4
  • #1 19 Wrz 2016 18:24
    nariox
    Poziom 11  

    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.

    0 4
  • #2 20 Wrz 2016 08:36
    tmf
    Moderator Mikrokontrolery Projektowanie

    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.

    0
  • #3 20 Wrz 2016 11:15
    nariox
    Poziom 11  

    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 - kosmiczna data i godzina, błędny start


    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
    Zaloguj się, aby zobaczyć kod



    Inicjalizacja PCFA: funkcja PCF8563_init:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    i kolejne funkcje :

    PCF 8563_INITINT:

    Kod: 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
    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

    0
  • #4 20 Wrz 2016 11:25
    PiotrPitucha
    Poziom 33  

    Witam
    Może drobnostka, ale sprawdź jak masz podłączony kondensator z oscylatora, w PCF8563 ma być podłączony do masy. natomiast w PCF8583 do zasilania PCFa.
    Pozdrawiam

    0
  • #5 20 Wrz 2016 12:02
    nariox
    Poziom 11  

    dodanie pętli opóźniającej w głównej funkcji po podaniu zasilania poskutkowało:)

    Kod: 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

    0