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.

DS 1307 bascom ustawienie daty -

glecki 27 Kwi 2013 18:50 2037 15
  • #1 27 Kwi 2013 18:50
    glecki
    Poziom 20  

    Po paru dniach walki skończyły się pomysły.Procesor Atmega162 i moduł zegara RTC Tiny z układem zegara DS1307.Po zaprogramowaniu DS-a poniższym kodem data wyświetla się nieprawidłowo.Wgląda to tak,jakby dzień,miesiąc i rok zamieniały się miejscami.
    [code]

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Proszę o sprawdzenie co jest nie tak.Dodam,że godzina jest programowana i wyświetlana prawidłowo.

    0 15
  • #2 27 Kwi 2013 19:13
    alien_audio
    Poziom 21  

    Witam.
    Zrób taki test : ustaw jako całość sekundy, minuty, godzinę , dzień tygodnia,
    oraz datę i odczytaj jako całość.
    Problem nie koniecznie jest w programie, sprawdź rezystory podciągające I2C.
    Krzysztof

    0
  • #3 27 Kwi 2013 19:36
    glecki
    Poziom 20  

    Rezystory 4,7 k zamontowane przy wyprowadzeniach procka.Przy poniższym listingu na LCD data jest wyświetlana 07/17/12

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Kolego jestem początkujący i nie rozumiem jak mam wykonać Twoje zalecenia.

    Dodano po 12 [minuty]:

    Przy dodaniu dnia tygodnia według listingu poniżej na LCD wyświetla się data 06/17/12
    Dzień tygodnia w trzeciej linii wyświetla 6,czyli chyba OK.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #4 27 Kwi 2013 20:15
    alien_audio
    Poziom 21  

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Tu ustawisz jako całość data i czas,
    a odczytuje pętla głowna programu.

    0
  • #5 27 Kwi 2013 20:34
    glecki
    Poziom 20  

    Po kodzie który poniżej data wyświetla sie tak : 01/22/11

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Czyli dzień 22 wyświetla się jako miesiąc,a w miejscu dzień jest 11 czyli miesiąc.A roku nie ma.Wydaje się że szyna I2C nie jest skomplikowana ale....Zastanawiam się nad wymianą modułu.

    0
  • #6 27 Kwi 2013 21:01
    yokoon
    Poziom 28  

    Podprogram "ustawdate" jest pusty.

    0
  • #7 27 Kwi 2013 21:10
    alien_audio
    Poziom 21  

    Wyświetlacz ma 20 znaków
    Ustaw wyświetlanie całości w postaci jednej linijki
    w pętli zamiast locate:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #8 27 Kwi 2013 21:28
    glecki
    Poziom 20  

    Po wprowadzeniu zmian według zaleceń kolegów sprawa ma się taka:na wyświetlaczu jest data: 06/27/040.Listing poprawionego programu poniżej:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #9 28 Kwi 2013 11:18
    glecki
    Poziom 20  

    Wpisując datę według poniższego kodu LCD wyświetla to tak: 16:08:49 03/20/09 3.W linii czwartej wyświetlacza wyświetlam dodatkowo sam rok i tam wyświetla się 09.

    Sekundy = 00
    Minuty = 04
    Godziny = 16
    Dzientygodnia = 3
    Dzien = 20
    Miesiac = 09
    Rok = 11

    Wygląda to tak jakby w miejscu "dzien" wyświetlał się dzień tygodnia,w miejscu "miesiac" jest dzień,w miejscu "rok" jest miesiąc a rok nie wyświetla się nigdzie.Jestem coraz bardziej skłonny stwierdzić,że nowy oryginalny moduł jest uszkodzony.Czy miał ktoś takie problemy?

    0
  • #10 28 Kwi 2013 11:51
    alien_audio
    Poziom 21  

    Witam.
    Jeszcze jedno pytanie czy Fuse-bity są ustawione prawidłowo.
    Chodzi mi czy ustawiony jest rezonator zewnętrzny
    i częstotliwość ?

    0
  • #11 28 Kwi 2013 11:58
    glecki
    Poziom 20  

    Rezonator zewnętrzny 16 MHz.Jest to układ który stworzyłem do nauki i testowania napisanych programów.Na tej samej szynie testowałem PCF 8583 ale miałem kłopoty z przeliczaniem roku,dni tygodnia i dlatego zdecydowałem się na DS 1307.Zaznaczam,że godziny,minuty i sekundy są odliczane prawidłowo.Zapis jakiejkolwiek godziny odbywa się prawidłowo i bez problemów.Próbowałem odczytywać tylko komórkę roku a tam zapisuje się miesiąc.

    0
  • #12 28 Kwi 2013 13:02
    alien_audio
    Poziom 21  

    W takim razie jeszcze sprawa DS1307.
    Zasilanie 5V, pin do baterii musi być podpięty do baterii
    lub w przypadku braku baterii do masy ( o ile pamiętam ).
    W każdym razie nie można go podłączać do 5V ani zostawić wolny.

    0
  • #13 28 Kwi 2013 13:07
    glecki
    Poziom 20  

    Kolego
    Jest to oryginalny moduł Tiny RTC fabrycznie zmontowany.Bateria działa prawidłowo,po odpięciu zasilania nie giną ustawienia.Dodatkowo jest zamontowany EEPROM na I2C ale nie sądzę,że on może coś złego powodować.

    0
  • #14 28 Kwi 2013 13:32
    alien_audio
    Poziom 21  

    Tam przypadkiem nie ma diody 1N4148 która podaje zasilanie +5V na wejście baterii ?

    1./ wyjmij baterie - wyresetują sie ustawienia modułu. Podłącz baterie i sprawdź działanie modułu ponownie.

    2./ wylutuj diodę 1N4148 i sprawdź działanie modułu.

    0
  • #15 28 Kwi 2013 13:51
    glecki
    Poziom 20  

    Restart robiłem wielokrotnie.Po restarcie zasilania na LCD 00:00:80 01/01/01 dzień tygodnia 0 ,rok w czwartej linii 01.Zegar stoi.Po wgraniu powyższym programem 16:04:00 03/20/09 numer tygodnia 3,a rok w czwartej linii 09.Zegar zaczyna pracować.Czyli wszystko po staremu.Dioda na miernik OK.Nie chcę jej wylutowywać (SMD),a do tego myślę ze będę reklamował moduł.

    0
  • #16 29 Kwi 2013 06:33
    glecki
    Poziom 20  

    Temat rozwiązany.Jak się okazało błąd był bardzo prosty.W listingu który odczytuje wszystkie parametry po kolei pomiędzy dzientygodnia a ACK nie było przecinka.Co ciekawe Bascom nie zgłaszał błędu.Wpadłem na to przy nauce zapisu i odczytu pamięci EEPROM która jest na tym samym module co zegar.Reasumując przy odczycie po I2C pomiędzy parametrem odczytywanym a ACK lub NACK musi być przecinek.Dziękuję koledze Alien_Audio za cenne podpowiedzi.

    0