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 i przerwanie co sekundę

mgradzki 11 Maj 2011 22:09 3315 13
  • #1 11 Maj 2011 22:09
    mgradzki
    Poziom 16  

    Witam
    Oglądam sobie dokumentację do PCF8563 i brakuje mi w nim generowania przerwań (na pinie INT) co sekundę jak robi to PCF8583. Wolałbym nie używać pinu CLKOUT skonfigurowanego do pracy przy 1 Hz.
    Kiedy używam PCF8583 ATMEGA w przerwaniu zewnętrznym generowanym przez PCF odczytuje sekundy, a jak trzeba to minuty i ... tak dalej.
    W PCF8563 widzę teoretycznie, że można byłoby generować przerwanie co sekundę za pomocą 8 bitowego timera i TF po ustawieniu:
    TIE=1
    TI/IP=1
    TD0=1 i TD10=0 //TIMER SOURCE CLOCK = 64 Hz
    rejestr 0Fh wartość 64

    Licznik odliczałby sobie i po dojściu do zera ustawiał TF i generował impuls na pinie INT. Pozostaje jeszcze ewentualnie kasowanie flagi TF o ile będzie to konieczne.

    Może ktoś ma doświadczenie z tym zegarem i podpowie, czy takie rozumowanie doprowadzi mnie do celu, czy lepiej nie "iść tą drogą" :) .

    Pozdrawiam

    -1 13
  • #2 11 Maj 2011 22:19
    tadzik85
    Poziom 38  

    tabela nr 8 i dział poświęcony timerowi pokazuje ze dobrze myślisz.

    0
  • #3 11 Maj 2011 22:33
    mgradzki
    Poziom 16  

    tadzik85 napisał:
    tabela nr 8 i dział poświęcony timerowi pokazuje ze dobrze myślisz.


    Dzięki.
    To teoria, ale na forach ludzie piszą, że jak się odczytuje często to się spóźnia, jak się ustawia alarmy to coś innego nie działa, częstotliwość na CLKOUT nie da się przestawić i takie tam marudzenie. Przypuszczam, że większość z tego jest wynikiem złego programu do obsługi PCF, ale zanim sobie zaprojektuję płytki to chciałem się upewnić.

    Pozdrawiam

    0
  • #4 11 Maj 2011 22:50
    tadzik85
    Poziom 38  

    mgradzki napisał:
    tadzik85 napisał:
    tabela nr 8 i dział poświęcony timerowi pokazuje ze dobrze myślisz.


    Dzięki.
    To teoria, ale na forach ludzie piszą, że jak się odczytuje często to się spóźnia, jak się ustawia alarmy to coś innego nie działa, częstotliwość na CLKOUT nie da się przestawić i takie tam marudzenie. Przypuszczam, że większość z tego jest wynikiem złego programu do obsługi PCF, ale zanim sobie zaprojektuję płytki to chciałem się upewnić.

    Pozdrawiam


    Częste odczytywanie nie ma prawa zmienić stabilności układu, A te info to ludzie którzy źle soft piszą. Jak w nocie to tak musi być ;)

    0
  • #5 13 Maj 2011 00:16
    gmp
    Poziom 19  

    tadzik85 napisał:
    mgradzki napisał:
    tadzik85 napisał:
    .....


    ....


    Częste odczytywanie nie ma prawa zmienić stabilności układu, A te info to ludzie którzy źle soft piszą. Jak w nocie to tak musi być ;)


    A jednak, w nocie jest napisane ze jak się odczytuje bez przerwy to zegar nie odświeża się, ale pytanie, po co odczytywać coś co zmienia się co sekundę częściej niż raz na sekundę?

    0
  • #6 15 Maj 2011 12:07
    asembler
    Poziom 32  

    Czyli w granicznym przypadku jak bede odczytywał ciągle to zegar stanie?
    Jakas bzdura. Ja tam noty nie czytałem ale jezeli jest tak jak piszesz to taki uklad nadaje sie do kosza a producent umieszczając taką notatke strzela sobie sam w kolano.

    0
  • #7 15 Maj 2011 12:48
    tmf
    Moderator Mikrokontrolery Projektowanie

    Oczywiście, że totalna bzdura. Radzę jednak dokładniej przeczytać notę, bo tam jak byk pisze co się dzieje. Z tym zegarem problem polega na tym, że ma ultraniski pobór prądu, w efekcie różne zakłócenia w źle zaprojektowanym układzie przenoszą się na oscylator zmieniając dokładność. Natomiast częstość odczytu rejestrów nie ma najmniejszego wpływu na wskazania.

    0
  • #8 15 Maj 2011 12:49
    JarekC
    Poziom 27  

    Witam,

    W przypadku PCF8563 ważne jest a by cykl odczytu lub zapisu do RTC
    (czyli od I2C START do I2C STOP) nie trwał dłużej niż 1 sekundę.
    Szczegółowo zostało to opisane w nocie aplikacyjnej UM10301 rozdział 18
    "Timing requirements for I2C read and write".
    Jednak nie przeszkadza to w tym aby odczytywać RTC wiele razy w ciągu sekundy.

    Pozdrawiam
    JarekC

    0
  • #9 15 Maj 2011 14:38
    tmf
    Moderator Mikrokontrolery Projektowanie

    Swoją drogą to nieźle pokręcony inżynier wymyślił taki mechanizm, zamiast stosować zwykłe rejestry buforowe.

    0
  • #10 15 Maj 2011 15:17
    asembler
    Poziom 32  

    A co ma do gadania inżynier jak mu ekonmista każe - NIC.
    A w niczym nie przezkadza chyba to jak teraz jest przeciez zegarek sie ustqawia raz na jakis czas a nie kilka razy w czasie.

    0
  • #11 15 Maj 2011 19:29
    tmf
    Moderator Mikrokontrolery Projektowanie

    Bez przesady. To struktura scalona, czy tam będzie 1000 czy 10000 tranzystorów to cena taka sama.

    0
  • #12 17 Lip 2011 13:28
    Zhan
    Poziom 14  

    tmf napisał:
    Oczywiście, że totalna bzdura. Radzę jednak dokładniej przeczytać notę, bo tam jak byk pisze co się dzieje. Z tym zegarem problem polega na tym, że ma ultraniski pobór prądu, w efekcie różne zakłócenia w źle zaprojektowanym układzie przenoszą się na oscylator zmieniając dokładność. Natomiast częstość odczytu rejestrów nie ma najmniejszego wpływu na wskazania.

    A na czym mogą polegać błędy w projektowaniu układu? Bo chyba mam właśnie taki źle zaprojektowany gdyż częste odczyty godziny powodują u mnie spóźnienie zegara około 1h na dobę. Na dodatek zauważyłem, że trymer umieszczony zgodnie z notą aplikacyjną nie ma żadnego wpływu na sygnał zegarowy na CLKOUT. Czy to znaczy, że nie ma tez wpływu na korektę odmierzania czasu? Wyłączenie odczytów lub ustawienie na odczyt z częstotliwością 1Hz poprawia dokładność ale wciąż brak reakcji na trymer.

    0
  • #13 02 Paź 2011 13:16
    szandi
    Poziom 10  

    poniżej zamieszczam kawałek kodu w BASCOM-ie zmieniający CLKOUT na wyjście - 1hz
    I2cstart
    I2cwbyte &HA2
    I2cwbyte &H0D
    I2cwbyte &B10000011
    I2cstop

    0
  • #14 24 Lut 2012 15:17
    mgradzki
    Poziom 16  

    W c to wygląda tak:

    Konfiguracja:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I w procedurze obsługi przerwania kasowanie flagi

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0