Witam,
mam problem z odczytaniem flagi alarmu.
Korzystam z RTC DS3231 i potrzebuje gdy rejestry czasu oraz alarmów się pokryją żeby wystawiło"1" na fladze A1F.
Na samym początku oczywiście ustawiam alarm i czas przed główną pętlą.
Funkcje TWI_write_buf wpisuja do kolejno nastepujacych rejestrów począwaszy od wpisanego np jak wyżej 0x07 i kolejne 3 rejestry
mam problem z odczytaniem flagi alarmu.
Korzystam z RTC DS3231 i potrzebuje gdy rejestry czasu oraz alarmów się pokryją żeby wystawiło"1" na fladze A1F.
void check_alarm(TDATETIME * dt){ // funkcja sprawdzania flagi A1F napisalem Nie i Tak zeby wiedziec kiedy wystawi po prostu "1"
uint8_t buf;
TWI_read_buf(ADR_DS1307, 0x0F, 1, buf);
dt->alarm = bcd2dec(buf);
if(!(dt->alarm & 0x01))
{
lcd_locate(3,0);
lcd_str("NIE");
}
else
{
lcd_locate(3,0);
lcd_str("TAK");
}void DS1307_set_alarm(uint8_t hh, uint8_t mm, uint8_t ss) { // tutaj mam funkcję ustawiania czasu alarmu oraz ustawiania "1" na bicie ostatnim rejestru 0Ah, aby porównywał godzine minuty oraz czas.
uint8_t buf[4];
buf[0]=dec2bcd(ss);
buf[1]=dec2bcd(mm);
buf[2]=dec2bcd(hh);
buf[3]=0x10;
TWI_write_buf( ADR_DS1307, 0x07, 4, buf );
}Na samym początku oczywiście ustawiam alarm i czas przed główną pętlą.
Funkcje TWI_write_buf wpisuja do kolejno nastepujacych rejestrów począwaszy od wpisanego np jak wyżej 0x07 i kolejne 3 rejestry
