Приветствую, уважаемые! Вопрос возник по RTC DS3231. Устройство имеет 6 пинов GND, VCC, SDA, SCL, SQW, 32K. С подключением первых четырех пинов особых вопросов не возникло. Время выставляется, температура измеряется, все пишется и в консоль и на LCD. Выставляются будильники (их в RTC две штуки), срабатывают, поднимаются при этом регистры A1F и A2F (адрес 0x0F). Поковырялся около пинов SQW и 32K. Кроме ежесекундного мигания светодиодом, подвешенным на пин SQW при выставленных вручную регистрах RS1 (0), RS2 (0) (по адресу 0x0E) от пина SQW не смог ничего добиться. Пин 32K дает постоянный высокочастотный сигнал, с которым тоже непонятно что делать. Возникло три вопроса: 1. Можно ли как-то, по наличию сигнала на пине определять срабатывание аларма и только потом уже лезть в регистры смотреть, какой именно из будильников сработал? 2. Как можно использовать пины 32K и SQW? 3. Как инициировать выставление регистов A1IE, A2IE (адрес 0x0E) при наступлении события для аларма? Или они только вручную поднимаются в 1?
32K - согласно даташиту это вывод тактовой частоты наружу. SQW может выдавать меандр, частота которого задается разрядами RS2 и RS1 регистра 0xE при условии, что разряд INTCN того же регистра установлен в ноль. Т.е. это выход делителя тактовой частоты. На странице 13 даташита есть табличка: RS2 RS1 SQUARE-WAVE OUTPUT FREQUENCY 0 0 1Hz 0 1 1.024kHz 1 0 4.096kHz 1 1 8.192kHz Правильно будет сказать "поднимаются разряды (биты) A1F и A2F регистра 0xE". Регистр состоит из разрядов.
SQW можно сконфигурировать в режим прерывания (INTCN=1), тогда он будет выдавать импульс при совпадении текущего времени и будильника