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

PCF8583 odczyt roku, BASCOM

Gieha 15 Kwi 2010 22:26 1966 5
REKLAMA
  • #1 7966251
    Gieha
    Poziom 11  
    Bardzo mi zależy żeby wyciągnąć z tego układu oprócz godziny i daty też rok , napisałem w Bascom tak:
    Sub Get_time
    I2cstart

    I2cwbyte 160
    I2cwbyte 2
    I2cstart
    I2cwbyte 161
    I2crbyte S , Ack
    I2crbyte M , Ack
    I2crbyte H , Ack
    I2crbyte Dz , Ack
    I2crbyte Mo , Ack
    I2crbyte Rok , Nack
    I2cstop

    Zmienna rok zmienia się o 1 przy każdej zmianie miesiąca a nie tylko na przełomie 12/01 a poza tym osiąga wartości większe niż 3 , wszędzie piszą że pcf8583 umie zliczać lata do 3.
    Proszę o pomoc.
  • REKLAMA
  • #2 7966952
    wicy
    Poziom 22  
    Gieha napisał:

    I2cwbyte 160
    I2cwbyte 2
    I2cstart
    I2cwbyte 161
    I2crbyte S , Ack
    I2crbyte M , Ack
    I2crbyte H , Ack
    I2crbyte Dz , Ack
    I2crbyte Mo , Ack
    I2crbyte Rok , Nack
    I2cstop

    Zmienna rok nie jest rokiem. U ciebie zmienna Dz będzie zawierała rok i dzień, kodowany w BCD. Rok zliczany jest od 0 do 3.
    Wszystko masz dokładnie opisane na str 7 i 8 noty.
  • REKLAMA
  • #3 7970109
    Gieha
    Poziom 11  
    No tak dwa bity z lewej to rok dalsze 2 to 10 dni i ostatnie 4 to dzień
    zrobiłem taki program
    Zapisuje na starcie godzinę 23:59:58 i datę 31-12 dzień wpisuję tak &B00110001 , daję mi to 31 dzień miesiąca , kiedy przechodzi data na 1-01 to
    zmienną dnia wyświetla mi tak &B00000001 ale bity roku nie uległy zmianie. Jak do tego nie dojdę chyba zmienię układ na jakiś inny . Gdyby ktoś jeszcze podpowiedział dlaczego
  • REKLAMA
  • #4 7970147
    mirekk36
    Poziom 42  
    Gieha napisał:
    Jak do tego nie dojdę chyba zmienię układ na jakiś inny .


    To jest najgorsza droga rozwiązywania swoich problemów bo z innym będziesz miał podobne zagwozdki tylko może przy okazji innych bitów. Scalaczki PCF8586 są już stare jak świat i każdemu zawsze działają. Więc jeszcze troszkę pomęcz temat z PDFem przed nosem a na pewno wyjdzie.
  • REKLAMA
  • Pomocny post
    #5 7970191
    wicy
    Poziom 22  
    Gieha napisał:
    No tak dwa bity z lewej to rok dalsze 2 to 10 dni i ostatnie 4 to dzień
    zrobiłem taki program
    Zapisuje na starcie godzinę 23:59:58 i datę 31-12 dzień wpisuję tak &B00110001 , daję mi to 31 dzień miesiąca , kiedy przechodzi data na 1-01 to
    zmienną dnia wyświetla mi tak &B00000001 ale bity roku nie uległy zmianie. Jak do tego nie dojdę chyba zmienię układ na jakiś inny . Gdyby ktoś jeszcze podpowiedział dlaczego


    
    'wstepne ustawienie roku w rejestrze
    'ustawienie 23:59:00 i 2009/12/31 pt
       I2cstart
       I2cwbyte 162
       I2cwbyte 2
       I2cwbyte 0                                               'zapis sekund
       I2cwbyte &B01011001                                      'zapis minut 59
       I2cwbyte &B00100011                                      'zapis godzniy (0-24h, 0-AM, 10-dziesiatki godzin, 0011-jednosci godzin) (23)
       I2cwbyte &B01110001                                      'zapis roku 01 / 11-dziesatki dnia , 0001-jednosci dania (31)
       I2cwbyte &B10010010                                      'zapis dni tygodnia 4(100), miesiaca 12(1 0010)
       I2cstop
    

    No zobacz czy będzie działało. Oczywiście adres 162 ustawiasz pod swój układ.
  • #6 7984859
    Gieha
    Poziom 11  
    UFF udało się i działa ale dodatkowo w bajcie Control/status trzeba było ustawić bit 3 ustawić na zero wtedy pokazuje pozycje 5 i 6 niemaskowane i widać rok . Czy instrukcja shift right bedzie najlepsza do rozdzielenia dnia od roku ?
    WIELKIE DZIĘKI
REKLAMA