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

Pytania i watpliwosci odnosnie DS1307, ATmega8 i Bascom

wilkolaski 29 Sty 2010 11:51 2360 1
REKLAMA
  • #1 7610085
    wilkolaski
    Poziom 18  
    Witajcie.
    Chcialbym ulozyc sobie kilka spraw i prosze o sprawdzenie moich przemyslen.
    Rzecz dotyczy ukladow RTC DS1307, ATmega8 i Bascom.
    1. Swiezy uklad trzeba zainicjowac ustawiajac 0 bitu 7 z rejestru 00H.
    2. Jezeli chce zeby uklad odliczal czas w trybie 24 godzinnym musze ustawic bit 6 rejestru 02H na 0.
    3. Po zaniku napiecia zasilajacego uklad zaczyna pracowac na baterii i normalnie odlicza czas.
    4. Co dzieje sie po ponownym pojawianu sie napiecia zasilajacego tzn czy uklad ponownie trzeba startowac czy po prostu mozna odczytywac odliczony czas ?
    5. Co stanie sie z ustawionymi rzeczami: czas, data, format odliczania godziny, inicjacja jezeli zabraknie napiecia zasilajacego i bateryjnego ?
    6. Czy format 24 godzinny i kwarc 32.768kHz sa ustawione w ukladzie standardowo ?
    7. Jak ustawiony jest swiezy, nowy uklad tzn:
    - jaki ustawiony jest format odliczania czasu (12 czy 24 godzinny) ?
    - ustawiony jest do pracy z jakim kwarcem ?

    Czy poprawne sa ponizsze procedury inicjacji i ustawienia formatu czasu

    Inicjacja
     I2cstart
     I2cwbyte &HD0
     I2cwbyte &H00
     I2cwbyte &B00000000
     I2cstop
    
    Ustawienie formatu czasu 24 godzinnego
     I2cstart
     I2cwbyte &HD0
     I2cwbyte &H02
     I2cwbyte &B00000000
     I2cstop


    inventco.eu - fragmenty kodu umieszczamy w znacznikach CODE
  • REKLAMA
  • #2 7610696
    Freddy
    Poziom 43  
    Ja używam z powodzeniem czegoś takiego i działa.

    Deklaracje:
    
     ...
    $lib "ds1307clock.lib"
     ...
    ' Konfiguracja pinów SCL i SDA
    Config Sda = Portc.1
    Config Scl = Portc.0
    '
    ' Adres DS 1307
    Const Ds1307w = &HD0                                       
    Const Ds1307r = &HD1
    Config Clock = User
    Dim Weekday As Byte
     ...
    

    Zmienne:
    
     ...
    Time$ = "23:58:59"                                          ' to watch the day changing value
    Date$ = "01-07-08" 
     ...
    

    Procedury wymagane przez ds1307clock.lib
    
    Getdatetime:
      I2cstart                                                  ' Generate start code
      I2cwbyte Ds1307w                                          ' send address
      I2cwbyte 0                                                ' start address in 1307
    
      I2cstart                                                  ' Generate start code
      I2cwbyte Ds1307r                                          ' send address
      I2crbyte _sec , Ack
      I2crbyte _min , Ack                                       ' MINUTES
      I2crbyte _hour , Ack                                      ' Hours
      I2crbyte Weekday , Ack                                    ' Day of Week
      I2crbyte _day , Ack                                       ' Day of Month
      I2crbyte _month , Ack                                     ' Month of Year
      I2crbyte _year , Nack                                     ' Year
      I2cstop
      _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
      _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
    Return
    
    Setdate:
      _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
      I2cstart                                                  ' Generate start code
      I2cwbyte Ds1307w                                          ' send address
      I2cwbyte 4                                                ' starting address in 1307
      I2cwbyte _day                                             ' Send Data to SECONDS
      I2cwbyte _month                                           ' MINUTES
      I2cwbyte _year                                            ' Hours
      I2cstop
    Return
    
    Settime:
      _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
      I2cstart                                                  ' Generate start code
      I2cwbyte Ds1307w                                          ' send address
      I2cwbyte 0                                                ' starting address in 1307
      I2cwbyte _sec                                             ' Send Data to SECONDS
      I2cwbyte _min                                             ' MINUTES
      I2cwbyte _hour                                            ' Hours
      I2cstop
    Return
    


    Twoje przemyślenia są jak najbardziej słuszne.
REKLAMA