DS3231 - пины 32K и SQW
- Войдите на сайт для отправки комментариев
Приветствую, уважаемые!
Вопрос возник по RNC 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 при наступлении события для аларма? Или они только вручную поднимаются в 1?
Sqw можкт пинать ардуино и будить его
А можно чуть подробнее?
При срабатывании алармов у меня только регистры A1F и A2F поднимаются. А они никак на SQW не влияют (по крайней мере я не увидел никаких изменений в значениях других регистров при срабатывании аларма). Каким образом заставить RTC генерирьвать сигнал на SQW при срабатывании аларма?
Кажется, разобрался.
При таких значениях диод мигает с частотой в 1 Hz (RS1=0;RS2=0)
Thu, 5/22/14 - 15:41:17 Temperature: 23.50; 136
A1M1: 0; A1M2: 0; A1M3: 0; A1M4: 0 ; Alarm1: 0 | 0:0:0
A2M2: 0; A2M3: 0; A2M4: 0; Alarm2: 0 | 0:0
EOSF:0; BBSQW:0; CONV:0; RS2:0; RS1:0; INTCN:0; A2IE:0; A1IE:0
OSF:1; 0:0; 0:0; 0:0; EN32kHz:1; BSY:0; A2F:0; A1F:0
Выставляю в 0x0E
EOSF:0; BBSQW:0; CONV:0; RS2:0; RS1:0; INTCN:1; A2IE:1; A1IE:1
Диод начинает гореть непрерывно.
При срабатывании аларма получаем
Thu, 5/22/14 - 15:42:1 Temperature: 23.50; 138
A1M1: 0; A1M2: 0; A1M3: 0; A1M4: 0; Alarm1: 0 | 0:0:0
A2M2: 0; A2M3: 0; A2M4: 0; Alarm2: 22 | 15:42
EOSF:0; BBSQW:0; CONV:0; RS2:0; RS1:0; INTCN:1; A2IE:1; A1IE:1
OSF:1; 0:0; 0:0; 0:0; EN32kHz:1; BSY:0; A2F:1; A1F:0
И светодиод гаснет!!!
Следующий вопрос.. Раз у нас на SQW не постоянный сигнал, то на какой пин на Arduino его вешать?
На ШИМ?
Про ШИМ я погорячился.
При частоте 1 Hz у меня при считывании данных 0 периодически выскакивал. Поднял частоту сигнала с помощью RS1 и RS2 до килогерца и нулей стало не видно.
int Val=0;
int Pin = 3;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Val = analogRead(Pin);
Serial.println(Val);
}
При срабатывании аларма на аналоговом входе четкий 0.
Вот как-то так это выглядит
-------------------------------------------------------------
Thu, 5/22/14 - 18:20:56 Temperature: 23.50; 136
A1M1: 0; A1M2: 0; A1M3: 0; A1M4: 0
Alarm1: 0 | 0:0:0
A2M2: 0; A2M3: 0; A2M4: 0
Alarm2: 22 | 18:21
EOSF:0; BBSQW:0; CONV:0; RS2:0; RS1:1; INTCN:1; A2IE:1; A1IE:1
OSF:1; 0:0; 0:0; 0:0; EN32kHz:1; BSY:0; A2F:0; A1F:0
Analog In (3): 767
-------------------------------------------------------------
Thu, 5/22/14 - 18:20:58 Temperature: 23.50; 136
A1M1: 0; A1M2: 0; A1M3: 0; A1M4: 0
Alarm1: 0 | 0:0:0
A2M2: 0; A2M3: 0; A2M4: 0
Alarm2: 22 | 18:21
EOSF:0; BBSQW:0; CONV:0; RS2:0; RS1:1; INTCN:1; A2IE:1; A1IE:1
OSF:1; 0:0; 0:0; 0:0; EN32kHz:1; BSY:0; A2F:1; A1F:0
Analog In (3): 0
Еще нюанс - между пином SQW и Analog In A3 воткнул диод - без него даже после срабатывания аларма на входе читаются значения, отличные от 0.
P.S. Подошел человек с осциллографом, потестировали подключения. Там положительный прямоугольный сигнал идет. Что там диод делает?...
P.S. Подошел человек с осциллографом, потестировали подключения. Там положительный прямоугольный сигнал идет.
Ну да, Square Wave... А Вы чего там ожидали? На выводе 32K - должен быть сигнал в 32 КГц.
Если пустить их через электролит - положительность отрежется, и сигнал, скорее всего, пойдет симметрично относительно нуля.
Интересно же. У меня тут из оборудования - комп, плата с МК, пара датчиков и светодиоды с проводами. Осциллограф дал более интересную картинку, чем светодиод. :)