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

[Rozwiązano] Dlaczego DS1307 liczy 4 razy szybciej? Załączam plik EAGLE z płytką.

Templarious 18 Cze 2020 14:41 876 20
  • #1 18766789
    Templarious
    Poziom 22  
    Drodzy,

    Mam problem z RTC DS1307 który podłączony jest do "starego" układu DS32khz. Mam na mysli starego w obudowie DIP.

    Zrobilem zegarek Nixie, wszystko pieknie dziala tylko ten RTC...a skad wiem ze 4 razy szybciej liczy? Pobieram informacje z DS1307 w interwale czasowym opartym na przepelnieniu Timera1 w Atmega8, wyswietlam sekundy na lampach Nixie i wiem, ze 1 sekunda czasu rzeczywistego to 4 dla DS1307.

    Wielka prośba o pomoc w znalezieniu przyczyny - stawiam na uszkodzony DS1307 lub uszkodzony wzorzec czasowy.

    W załączniku plik Eagle z plytka, wsad z AVR studio.
  • #3 18767705
    Templarious
    Poziom 22  
    JarekC napisał:
    Na wyjściu SQW/OUT DS1307 możesz uzyskać przebieg 1Hz, trzeba w rejestrze Control DS1307 ustawić bit SQWE=1 i bity RS1=0 RS0=0.

    Następnie podepnij do tego pina LED-> rezystor -> zasilanie i zobacz z jaka częstotliwością będzie migał.


    A jesli mam utrudniony dostep do DS1307 to co moge innego zrobic ;)? (mam zrobiona PCB na PCB, zlutowane razem)
  • #5 18767789
    Templarious
    Poziom 22  
    O tak:

    Dlaczego DS1307 liczy 4 razy szybciej? Załączam plik EAGLE z płytką.

    Powinno działać, a leci jaki szalony 4x szybciej.
  • #6 18767816
    excray
    Poziom 41  
    Skąd pomysł na R10? Być może z jego powodu oraz przy współudziale C13 i R9 tworzy się generator RC.
  • #7 18767825
    Templarious
    Poziom 22  
    excray napisał:
    Skąd pomysł na R10? Być może z jego powodu oraz przy współudziale C13 i R9 tworzy się generator RC.


    Pomysł wziąłem sugerując się stroną: Link
  • #8 18767837
    JarekC
    Poziom 32  
    excray napisał:
    Skąd pomysł na R10? Być może z jego powodu oraz przy współudziale C13 i R9 tworzy się generator RC.


    To jest zalecane połączenie pomiędzy DS32Khz a DS1307 mające na celu obniżenie poboru prądu przez DS32kHz, opis jest w karcie katalogowej DSa i nocie aplikacyjnej Maxima nr 701.
  • #9 18767852
    excray
    Poziom 41  
    JarekC napisał:
    To jest zalecane połączenie pomiędzy DS32Khz a DS1307 mające na celu obniżenie poboru prądu przez DS32kHz, opis jest w karcie katalogowej DSa i nocie aplikacyjnej Maxima nr 701.

    Właśnie w karcie katalogowej jest coś innego napisane:
    https://datasheets.maximintegrated.com/en/ds/DS1307.pdf - patrz opis wyprowadzeń.
  • #10 18767888
    Templarious
    Poziom 22  
    excray napisał:
    JarekC napisał:
    To jest zalecane połączenie pomiędzy DS32Khz a DS1307 mające na celu obniżenie poboru prądu przez DS32kHz, opis jest w karcie katalogowej DSa i nocie aplikacyjnej Maxima nr 701.

    Właśnie w karcie katalogowej jest coś innego napisane:
    https://datasheets.maximintegrated.com/en/ds/DS1307.pdf - patrz opis wyprowadzeń.


    The output of the internal oscillator, X2, is floated if an external oscillator is connected to X1.

    Rozumiem, warto sprawdzic. Aczkolwiek na tej stronie przedstawione rozwiazanie dziala :).
  • #11 18767894
    JarekC
    Poziom 32  
    Fragment karty katalogowej DS32kHz
    Dlaczego DS1307 liczy 4 razy szybciej? Załączam plik EAGLE z płytką.

    Oraz link do noty aplikacyjnej:
    https://www.maximintegrated.com/en/design/technical-documents/app-notes/7/701.html

    Można by spróbować podłączenia bezpośredniego bez układu RC albo bez R 33k ale kolega pisze iż ma utrudniony dostęp do układu.
  • #12 18767932
    excray
    Poziom 41  
    W sytuacji gdy nota DS32RTC mówi o bliżej nieokreślonym układzie RTC, a nota DS1307 mówi aby przy takich konfiguracjach pozostawić X2 nie podłączone, oparłbym się jednak na tym drugim rozwiązaniu.
  • #13 18767933
    Templarious
    Poziom 22  
    Wlasnie wyjałem baterie podtrzymujaca czas i chyba ds1307 zdechl... mam wartosci 00:00 zamiast godziny, minuty.. Chyba byl wadliwy.
    Poczekm jeszcze 30min i zobacze czy czas się zmienia.
  • #14 18767940
    excray
    Poziom 41  
    Templarious napisał:
    Wlasnie wyjałem baterie podtrzymujaca czas i chyba ds1307 zdechl

    Czy wyzerowałeś bit CH?
  • #15 18767952
    Templarious
    Poziom 22  
    excray napisał:
    Templarious napisał:
    Wlasnie wyjałem baterie podtrzymujaca czas i chyba ds1307 zdechl

    Czy wyzerowałeś bit CH?


    Program się nie zmienial wcale.
    Baterie mialem wlozona jak uruchamialem plytke tzn ja zaczynalem oprogramowywac i raz zle napisalem program, ktory w petli while non stop odpytywal DSa (pewnie kilka tysiecy razy na sekunde) i z tego co wyczytalem, to to, ze DS mogl sie popsuc. Wkoncu zmienilem program i teraz odpytuje go co 1 sekunde uzywajac timera 1 (przepelnienie).... Wtedy zauwazylem ze DS1307 zaczal sie spieszyc jak cokolwiek udalo mi sie odczytac z tego ukladu.

    Teraz baterie podtrzymujaca czas wyjalem i bum, nic nie pokazuje.
  • #16 18767956
    excray
    Poziom 41  
    Przed pętlą whle(1) wywołaj funkcję "SetTimeDate()".
  • #17 18767968
    Templarious
    Poziom 22  
    excray napisał:
    Przed pętlą whle(1) wywołaj funkcję "SetTimeDate()".


    Liczy znowu szybko.. Kurcze, nie usmiecha mi sie rozlutowywanie plytki pcb aby sie dostac do dolnej.
    Czy macie jeszcze jakies pomysly?
  • #19 18767983
    Templarious
    Poziom 22  
    JarekC napisał:
    A tak ciasno masz że nie dostaniesz się do pinu SQW?

    Mysle ze tak :P Ciezko jest tam cokolwiek wlozyc (sensownie i bez pomylki)

    Dlaczego DS1307 liczy 4 razy szybciej? Załączam plik EAGLE z płytką.

    Panowie, odpiszę jutro (19 Czerwca rano) ide spac.
    Dziekuje za obecna pomoc, czas odpoczac
  • #20 18768665
    Templarious
    Poziom 22  
    Czy dobrze ustawiam bit SQW z czestotliwoscia 1Hz?

    
    void I2C_SQW1H()
    {
    	I2C_Start(DS1307); // send bus address
    	I2C_Write(0x07);
    	I2C_Write(0x10); // then send the data byte
    	I2C_Stop();
    }


    PS, rozlutowałem dziadostwo i moge robic co mi sie podoba..
    //wykonalem kod i dioda LED caly czas szybko miga, okolo 4 razy szybciej niz powinna.

    Panowie, wylutowanie opornika 33k zalatwilo sprawe, dioda wg. mnie miga juz co 1 sek. (0,5 sek wlacz, 0,5 wylacz). Niestety aby dostac sie do srodka musialem "poswiecic" gorna plytke, wiec zanim zmontuje wszystko od nowa, minie kilka dni.

    Odpisze tutaj jak juz to wszystko ogarne.

    ---------------------------------------------------------

    Wylutowanie opornika 33k tak aby nie bylo polaczenia przy DS1307 do jego portu X2, zalatwilo sprawe. zamykam!
  • #21 18798536
    Templarious
    Poziom 22  
    Wylutowanie opornika 33k od portu X2 DS1307 zalatwilo sprawe.
    Tyle to trwalo poniewaz robilem wszystko od nowa (PCB bylo zrobione na kanapke i przy rozlutowaniu rozpadlo się ale plytke uratowalem na testy developerskie).

Podsumowanie tematu

Użytkownik zgłosił problem z zegarem czasu rzeczywistego (RTC) DS1307, który działał cztery razy szybciej niż powinien, co zauważył podczas wyświetlania sekund na lampach Nixie. Problemy związane były z połączeniem DS1307 z układem DS32kHz oraz z ustawieniami bitów w rejestrze kontrolnym DS1307. Po wymianie opornika 33k, który był podłączony do portu X2 DS1307, problem został rozwiązany, a dioda LED zaczęła migać z odpowiednią częstotliwością 1Hz. Użytkownik podkreślił, że wcześniejsze błędne programowanie mogło uszkodzić DS1307, co również mogło wpłynąć na jego działanie.
Podsumowanie wygenerowane przez model językowy.
REKLAMA