[attiny2313] PCF8583 problem z rejestrami miesiecy i dni

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

[attiny2313] PCF8583 problem z rejestrami miesiecy i dni

Post autor: grysek67 » 08 maja 2009, 16:36

Witam,

po zapisaniu własnych wartości do rejestru miesięcy i dni tego układu i odczytywaniu ich póki się jeszcze nie zmieniły jest wszystko ok. Problem zaczyna się dopiero wtedy kiedy kiedy rejestr dni ma się zwiększyć o 1, wtedy to niewiadomo czemu rejestr dni zwieksza sie o 20. Nie mam pojecia czemu się tak dzieje. Pina A0 tego układu jest podpięty do plusa więc adresy mam chyba dobrze? Czy ktoś wie co jest nie tak? Wszystkie inne rejestry działają poprawnie. Za każdą poradę serdecznie dziękuję. Fragment programu odpowiedzialnego za odczyt i zapis do układu zamieszczam poniżej

Kod: Zaznacz cały

I2cstart
I2cwbyte 162
I2cwbyte 3
I2cwbyte Minuty
I2cwbyte Godziny
I2cwbyte Dzien
I2cwbyte Miesiac
I2cstop


Godziny = 0
Minuty = 0
Dzien = 0
Miesiac = 0


Do
I2cstart
I2cwbyte 162
I2cwbyte 2
I2cstart
I2cwbyte 163
I2crbyte Sekundy , Ack
I2crbyte Minuty , Ack
I2crbyte Godziny , Ack
I2crbyte Dzien , Ack
I2crbyte Miesiac , Nack
I2cstop

Godziny = Makedec(godziny)
Minuty = Makedec(minuty)
Sekundy = Makedec(sekundy)
Dzien = Makedec(dzien)
Miesiac = Makedec(miesiac)
Lcd godziny;":";minuty;":";sekundy
Lowerline
Lcd dzien;".";miesiac 

Awatar użytkownika
Wesker
-
Posty: 27
Rejestracja: 01 lut 2006, 10:33
Lokalizacja: Leżajsk

Post autor: Wesker » 17 maja 2009, 21:04

Jeśli nie jest ustawiony bit 3 w rejestrze control to możesz odczytywać datę wraz z rokiem(szczegóły znajdziesz w dokumentacji układu). Możliwe też, ze zapisujesz złe dane do tego rejestru, ale tego nie widać na tym listingu. Przed zapisaniem musisz zamienić format danych wykorzystując funkcje makebcd. Zerowanie zmiennych nie jest potrzebne, bo i tak zostaną nadpisane przy odczycie.

ODPOWIEDZ