Odczytuje tą procedurką czas z pcf i jest ok oprócz nr dnia tygodnia który po minięciu północy się nie zmienia. Sprawdzałem ja kilkukrotnie ale nie mogę znależc błędu. W zmiennej dzientygodnia powinien być ten numer dnia ale tam jest zawsze 0
Sub Czytaj_pcf8583
Local Pomocnicza As Byte
I2cstart
I2cwbyte &HA0 'Adres PCF8535 = 160
I2cwbyte 2 'select control register
I2cstart
I2cwbyte &HA1 'Adres PCF8535 = 160 dla odczytu
I2crbyte S , Ack 'Odczytaj sekundy i potwierdż transmisje
I2crbyte M , Ack 'Odczytaj minuty i potwierdż transmisje
I2crbyte H , Ack 'Odczytaj godziny i potwierdż transmisje
I2crbyte D , Ack 'Odczytaj rok i dni
I2crbyte Mie , Nack 'odczytaj dzień tygodnia i miesiąc
I2cstop
Pomocnicza = D And &B00111111 'zerujemy dwa najstarsze bity i zostają dni
Shift D , Right , 6 'przesuwamy dwa najstarsze bity i zostaje rok
Lata = D 'lata
D = Pomocnicza 'dni
Pomocnicza = Mie And &B00011111 'zerój 3 najstarsze bity i mamy miesiąc
Dzientygodnia = Mie And &B11100000 'nr dnia tygodnia
Shift Dzientygodnia , Right , 5
Mie = Pomocnicza 'mie=nr miesiąca
End Sub Czytaj_pcf8583
Sub Czytaj_pcf8583
Local Pomocnicza As Byte
I2cstart
I2cwbyte &HA0 'Adres PCF8535 = 160
I2cwbyte 2 'select control register
I2cstart
I2cwbyte &HA1 'Adres PCF8535 = 160 dla odczytu
I2crbyte S , Ack 'Odczytaj sekundy i potwierdż transmisje
I2crbyte M , Ack 'Odczytaj minuty i potwierdż transmisje
I2crbyte H , Ack 'Odczytaj godziny i potwierdż transmisje
I2crbyte D , Ack 'Odczytaj rok i dni
I2crbyte Mie , Nack 'odczytaj dzień tygodnia i miesiąc
I2cstop
Pomocnicza = D And &B00111111 'zerujemy dwa najstarsze bity i zostają dni
Shift D , Right , 6 'przesuwamy dwa najstarsze bity i zostaje rok
Lata = D 'lata
D = Pomocnicza 'dni
Pomocnicza = Mie And &B00011111 'zerój 3 najstarsze bity i mamy miesiąc
Dzientygodnia = Mie And &B11100000 'nr dnia tygodnia
Shift Dzientygodnia , Right , 5
Mie = Pomocnicza 'mie=nr miesiąca
End Sub Czytaj_pcf8583