marně se snažím nastavit čas v RTC8583. Pokud zapíšu např na adresu 0x02(sekundy) požadovaný čas například 0x00, přestanou se mi vteřiny přičítat. Naopak když zapíšu 0xFF, počátají se správně. Mám za to, že pouze nastavuji masku, na kterých bitech se bude přičítat a na kterých ne. U hodin se mi to například hodí, protože zamaskuji AM/PM flag, ale nevím jak nastavit aktuální čas.
Zkrácený zdrojový kód:
Kód: Vybrat vše
#define TWI_SLA 0xa2 //1 0 1 0 0 0 1 + 0
int twi_read_bytes(uint8_t twi_sla, uint16_t address, int length, uint8_t *buf);
int twi_write_bytes(uint8_t twi_sla, uint16_t address, int length, uint8_t *buf);
void main(void)
{
uint8_t buffer[3];
uint8_t time[3] = {0x35, 0x25, 0x19}; //19:25:35 (hh:mm:ss)
uint8_t stop = 0b10000000;
uint8_t start = 0b00000000;
twi_read_bytes(TWI_SLA, 0x02, 3, buffer);
printf("%02x:%02x:%02x \n", buffer[2],buffer[1],buffer[0]);
twi_write_bytes(TWI_SLA, 0x00, 1, &stop);
twi_write_bytes(TWI_SLA, 0x02, 3, time);
twi_write_bytes(TWI_SLA, 0x00, 1, &start);
}
V tomto případě se mi začně čas počítat naprosto nesmyslně.
Výpis času po vteřinách:
Kód: Vybrat vše
25:00:35
25:00:34
25:00:35
25:00:30
25:00:31
25:00:00
25:00:01
25:00:00
25:00:01