Napotkałem na dziwny problem. Oczywiście może to być błąd programu ale aktualnie wszystko posprawdzałem i nic nie znalazłem
Chodzi mi o zawartość rejestrów daty i czasu układu PCF8563 zaraz po włączeniu zasilania.
O ile czas 00:00:00 jest normalny to odczyt daty Mies:00, Dzień:00 jest raczej nie normalny. Nie może być dnia i miesiąca o wartości 00. Datasheet podaje że wartość zawsze zaczyna się od 1. Tyle że ja dostaje odczyt że jest 00
Procedura odczytu wygląda tak:
- i2c start
- nadaj bajt 162 (dec)
- nadaj bajt 2 (dec)
- i2c repeated start
- nadaj bajt 163 (dec)
- wczytaj 6 bajtów z ACK
- wczytaj 1 bajt z NACK
- i2c stop
Adres PCF do zapisu to 162, odczyt 163. Zaczynam czytać od rejestru 0x02 czyli sekundy.
Sekundnik, minutnik i godziny działają prawidłowo. Mogę nawet zapisać dane czasu i daty do układu PCF i przyjmie je prawidłowo czyli transmisja idzie (po odczytaniu data i godzina zgadza się z tym co przesłałem)
Dane są wysyłane z Atmega8 po sprzętowym TWI skonfigurowanym na 100kHz, rezystory podciągające 5K, procesor i PCF zasilane z 3.3V.
No i tu mam pytanie. Czemu takie jaja są? Nie mam dostępu do analizatora logicznego czy oscyloskopu cyfrowego bo wtedy sprawę bym rozwiązał szybko.
Czy ktoś z was tak miał że PCF zaraz po starcie podaje dzień i miesiąc jako 00?
Czasem po wysłaniu daty i czasu do PCF przestawia mi się rok na 1 więcej, też dziwna sprawa bo program obejrzałem i narazie błędów brak.
-------------
Edit: kawałki wsadu swojego programu usunąłem ponieważ teraz wiem że to nie wina programu, a jedynie PCFa
Chodzi mi o zawartość rejestrów daty i czasu układu PCF8563 zaraz po włączeniu zasilania.
O ile czas 00:00:00 jest normalny to odczyt daty Mies:00, Dzień:00 jest raczej nie normalny. Nie może być dnia i miesiąca o wartości 00. Datasheet podaje że wartość zawsze zaczyna się od 1. Tyle że ja dostaje odczyt że jest 00
Procedura odczytu wygląda tak:
- i2c start
- nadaj bajt 162 (dec)
- nadaj bajt 2 (dec)
- i2c repeated start
- nadaj bajt 163 (dec)
- wczytaj 6 bajtów z ACK
- wczytaj 1 bajt z NACK
- i2c stop
Adres PCF do zapisu to 162, odczyt 163. Zaczynam czytać od rejestru 0x02 czyli sekundy.
Sekundnik, minutnik i godziny działają prawidłowo. Mogę nawet zapisać dane czasu i daty do układu PCF i przyjmie je prawidłowo czyli transmisja idzie (po odczytaniu data i godzina zgadza się z tym co przesłałem)
Dane są wysyłane z Atmega8 po sprzętowym TWI skonfigurowanym na 100kHz, rezystory podciągające 5K, procesor i PCF zasilane z 3.3V.
No i tu mam pytanie. Czemu takie jaja są? Nie mam dostępu do analizatora logicznego czy oscyloskopu cyfrowego bo wtedy sprawę bym rozwiązał szybko.
Czy ktoś z was tak miał że PCF zaraz po starcie podaje dzień i miesiąc jako 00?
Czasem po wysłaniu daty i czasu do PCF przestawia mi się rok na 1 więcej, też dziwna sprawa bo program obejrzałem i narazie błędów brak.
-------------
Edit: kawałki wsadu swojego programu usunąłem ponieważ teraz wiem że to nie wina programu, a jedynie PCFa
