Witam, przejrzałem nie jeden temat i próbowałem na wiele sposobów, ale nie mogę sobie poradzić z odczytaniem dnia tygodnia.
Potrzebuję tylko czas oraz dzień tygodnia (poniedziałek-niedziela).
Wszystko czego próbowałem to zwracało mi jako dzień tygodnia 0 lub 1. Niestety nie zwracało od 0 do 6.
Już nawet gotowiec będzie pomocny bo będę mógł spokojnie przeanalizować wszystko. Może jakiś mały błąd robię.
Zamieszczam fragmenty kodu odpowiedzialne za RTC.
Zapis:
Odczyt:
Dodam że najpierw wgrywam program z nastawami RTC, a później już prawidłowy soft który pełni tylko rolę odczytu.
Potrzebuję tylko czas oraz dzień tygodnia (poniedziałek-niedziela).
Wszystko czego próbowałem to zwracało mi jako dzień tygodnia 0 lub 1. Niestety nie zwracało od 0 do 6.
Już nawet gotowiec będzie pomocny bo będę mógł spokojnie przeanalizować wszystko. Może jakiś mały błąd robię.
Zamieszczam fragmenty kodu odpowiedzialne za RTC.
Zapis:
$regfile = "m328pdef.dat"
$crystal = 16000000
Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.2
Config Scl = Portc.5
Config Sda = Portc.4
Dim Sekundy As Byte : Dim Minuty As Byte : Dim Godziny As Byte
Dim Dzien As Byte : Dim Miesiac As Byte
Dim Rok As Byte : Dim Dzien_tygodnia As Byte
Cursor Off
Cls
'Przykładowe wartości do zapisu...............
Godziny = 10
Minuty = 15
Sekundy = 0
Rok = 17
Miesiac = 10
Dzien = 12
'................................................................................
Godziny = Makebcd(godziny)
Minuty = Makebcd(minuty)
Sekundy = Makebcd(sekundy)
Rok = Rok Mod 4
Rok = Makebcd(rok)
Shift Rok , Left , 6
Dzien = Makebcd(dzien)
Dzien = Rok Or Dzien
Miesiac = Makebcd(miesiac)
Dzien_tygodnia = Miesiac
Shift Dzien_tygodnia , Left , 5
Miesiac = Dzien_tygodnia Or Miesiac
I2cstart
I2cwbyte &HA0
I2cwbyte 2
I2cwbyte Sekundy
I2cwbyte Minuty
I2cwbyte Godziny
I2cwbyte Dzien
I2cwbyte Miesiac
I2cstopOdczyt:
$regfile = "m328pdef.dat"
$crystal = 16000000
Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.2
Config Scl = Portc.5
Config Sda = Portc.4
I2cstart
I2cwbyte &HA0
I2cwbyte 2
I2cstart
I2cwbyte &HA1
I2crbyte Sekundy , Ack
I2crbyte Minuty , Ack
I2crbyte Godziny , Ack
I2crbyte Dzien , Ack
I2crbyte Miesiac , Nack
I2cstop
Sekundy = Makedec(sekundy)
Minuty = Makedec(minuty)
Godziny = Makedec(godziny)
Rok = Dzien
Shift Rok , Right , 6
Rok = Makedec(rok)
Dzien.7 = 0 : Dzien.6 = 0
Dzien = Makedec(dzien)
Dzien_tygodnia = Miesiac
Shift Dzien_tygodnia , Right , 5
Dzien_tygodnia = Makedec(dzien_tygodnia)
Miesiac.7 = 0 : Miesiac.6 = 0 : Miesiac.5 = 0
Miesiac = Makedec(miesiac)
Dodam że najpierw wgrywam program z nastawami RTC, a później już prawidłowy soft który pełni tylko rolę odczytu.