Witam napisałem program do obsługi PCF8583 w C wszystko gra oprócz daty.
Godzinę i minutę konwertuje z dec na bcd takim kodem:
Natomiast zapis ustawień wygląda tak:
Wiem że jest problem z konwersją już próbowałem kilku sposobów i nie za bardzo mi to idzie.
Godzinę i minutę konwertuje z dec na bcd takim kodem:
unsigned char konwersja(unsigned char dec)
{
unsigned char bcd;
bcd=(dec/10)<<4;
bcd+=dec%10;
return bcd;
} Natomiast zapis ustawień wygląda tak:
//Zapis do ukladu
void zapis(char godz,char min,char dz,char mc,char rok)
{
char temp;
TWI(0x02,0x00); //Kasowanie sekund
temp=konwersja(min);
TWI(0x03,temp); //Zapis minut <- Jest OK
temp=konwersja(godz);
TWI(0x04,temp); //Zapis godzin <-jest OK
temp=konwersja(mc);
TWI(0x06,temp); //Zapis miesięcy <-działa tylko do liczby 9
rok=konwersja(rok);
dz=konwersja(dz);
rok=rok<<6;
dz += rok;
TWI(0x05,dz); //Zapis dni i lat <-dni tylko do 9 po ustawieniu lat występuje problem z interpretacją
}
void TWI (char adres,char dane)
{
START_TWI();
WRITE_TWI(0xA2);
WRITE_TWI(adres);
WRITE_TWI(dane);
STOP_TWI();
}
Wiem że jest problem z konwersją już próbowałem kilku sposobów i nie za bardzo mi to idzie.