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

[Atmega32][Bascom] DS1307

morswin89 26 Gru 2011 16:33 3071 12
REKLAMA
  • #1 10305392
    morswin89
    Poziom 23  
    Witam

    kod wyglądana następującą:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Problem polega na tym, że pokazuje na wyświetlaczu 00:00:80 a jak przed główną pętlą dowołam się do procedury zapisu to wtedy zegar działa poprawnie tylko po zaniku napięcia zaczyna odliczać znowu od 00:00:00 (bo znowu wywoływana jest procedura zapisu) a nie od poprzedniej wartości.
  • REKLAMA
  • #2 10305514
    kiziu13
    Poziom 17  
    Z noty DSa:
    Cytat:
    Please note that the initial power on state of all registers is not defined. Therefore it is important to
    enable the oscillator (CH bit=0) during initial configuration.

    Robisz konfigurację po każdym zaniku zasilania?

    Trudno też, żeby liczył od poprzedniej wartości po zaniku zasilania, jeśli nie masz podtrzymania bateryjnego.
  • REKLAMA
  • #5 10306478
    morswin89
    Poziom 23  
    Wszystko OK, tylko prosiłbym o jakiś przykład kodu jak to ma wyglądać w Bascomie.

    Dodano po 2 [godziny] 15 [minuty]:

    Zmajstrowałem coś takiego i wydaje się działać poprawnie. Wstawione przed główną pętlą.
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #6 10307202
    kiziu13
    Poziom 17  
    Przecież masz już swój kod, trzeba tylko na jego podstawie dorobić fragment. Wystarczy, że dodasz tam wysyłanie odpowiedniej(nich) wartości do odpowiedniego(nich) rejestru(ów), wykonasz raz, usuniesz kod i tyle. Później powinno śmigać do następnego zaniku zasilania.

    EDIT: Nie zdążyłem. Pamiętaj, że o ile nie ma zaniku zasilania, to należy to wykonać tylko raz.
  • #8 10307609
    Freddy
    Poziom 43  
    Do biblioteki używam -
    Kod: text
    Zaloguj się, aby zobaczyć kod

    W programie :
    
    ' Adres DS 1307
    Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
    Const Ds1307r = &HD1
    '
    Config Clock = User                                         ' this will dim the bytes automatic
    '
    Dim Weekday As Byte
    ' Do ustawienia czasu Call SetTime
    Time$ = "23:58:59"                                          ' to watch the day changing value
    Date$ = "01-07-10"    
    

    i to całe działa.
  • REKLAMA
  • #9 10337715
    morswin89
    Poziom 23  
    Konfiguracja DS1307
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W głównej pętli mam skok do podprogramu obsługi klawiszy i w nim odczytuje czas.
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Następnie w menu jest podmenu ustawiania aktualnej godziny
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wszystko nawet działa :) ale... wchodząc do menu ustawiania czasu pokazują się tam dziwne wartości zamiast ostatnio odczytanej godziny np 20:80 gdzie aktualna godzina jest całkiem inna. Nie mam już pomysłu dlaczego tak się dzieje?
    Po za tym zegar się strasznie późni nawet kilkadziesiąt sekund na dobę z PCF8583 nie było takich problemów.
  • #10 10337960
    Freddy
    Poziom 43  
    Coś źle zrobiłeś, sprawdź. Dałem Ci działający sprawdzony przykład. U mnie zegar chodzi dokładnie.
    Zastosowałeś się do wskazówek z DS o sposobie instalacji kwarcu ?
  • #11 10338039
    morswin89
    Poziom 23  
    Mógłbym prosić o dokładniejsze wytłumaczenie tego przykładu bo nie bardzo wiem co miałbym tam pozmieniać aby ustawiać zegar w menu.

    Dodano po 4 [godziny] 23 [minuty]:

    Problem rozwikłany. Zapomniałem przeliczyć odczytana wartość hex na dec. Co do kwarca to nie mam pola masy wkoło wyprowadzeń oscylatora
  • REKLAMA
  • Pomocny post
    #12 10341173
    Freddy
    Poziom 43  
    morswin89 napisał:
    Mógłbym prosić o dokładniejsze wytłumaczenie tego przykładu bo nie bardzo wiem co miałbym tam pozmieniać aby ustawiać zegar w menu.

    Dodano po 4 [godziny] 23 [minuty]:

    Problem rozwikłany. Zapomniałem przeliczyć odczytana wartość hex na dec. Co do kwarca to nie mam pola masy wkoło wyprowadzeń oscylatora

    Pracujesz na zmiennych Date$ i Time$, to wszystko.
    Odnośnie kwarcu, nie chodzi o masę, ale o jak najbliższe jego zamontowanie.
    Możesz mieć uszkodzony kwarc :)
REKLAMA