DS3231 не могу запустить будильник

Sakolua
Offline
Зарегистрирован: 13.08.2019

Использую бибиотеку DS3231:

Library to communicate with Maxim's DS3231 high-precision real-time clock (RTC)
Eric Ayars DS3231 library with JeeLabs/Ladyada's RTC libraries spliced in by
Andy Wickert

Никак не могу запустить будильник. Он будет работать в режиме опроса checkIfAlarm, а не прерывания. И всегда возвращается ноль.

Запускаю 1 как в примере
Clock.setA1Time(0, Clock.getHour(h12, PM), Clock.getMinute(), (Clock.getSecond() + 20)%60, 0x0, true, false, false);
Clock.turnOnAlarm(1);

Потом в loop постоянно проверяю Clock.checkIfAlarm(1) и 0.

checkAlarmEnabled(1) всегда 1. Clock.getA1Time показывает правильное время, но когда оно настает - ничего не происходит.
Что не так?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Sakolua пишет:

Использую бибиотеку INT/SQW:

Library to communicate with Maxim's DS3231 high-precision real-time clock (RTC)
Eric Ayars DS3231 library with JeeLabs/Ladyada's RTC libraries spliced in by
Andy Wickert

Никак не могу запустить будильник. Он будет работать в режиме опроса checkIfAlarm, а не прерывания. И всегда возвращается ноль.

Запускаю 1 как в примере
Clock.setA1Time(0, Clock.getHour(h12, PM), Clock.getMinute(), (Clock.getSecond() + 20)%60, 0x0, true, false, false);
Clock.turnOnAlarm(1);

Потом в loop постоянно проверяю Clock.checkIfAlarm(1) и 0.

checkAlarmEnabled(1) всегда 1. Clock.getA1Time показывает правильное время, но когда оно настает - ничего не происходит.
Что не так?

А что, по вашему, должно произойти? Звонок зазвенеть? Когда приходит время аларма ножка  INT/SQW DS3231 притягивается к земле (те на ней появлеется 0)

Эта ножка у вас подключена куда нибудь?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sakolua пишет:

Использую бибиотеку DS3231:

Какую именно? Их 100500. У неё ссылка есть?

Sakolua пишет:

Что не так?

Скетч не опубликован. Также не опубликовано что именно он печатает (что там всегда 1, а что не один).

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Там же коммент есть, по поводу битов для будильника:

/* Retrieves everything you could want to know about alarm
 * one. 
 * A1Dy true makes the alarm go on A1Day = Day of Week,
 * A1Dy false makes the alarm go on A1Day = Date of month.
 *
 * byte AlarmBits sets the behavior of the alarms:
 *	Dy	A1M4	A1M3	A1M2	A1M1	Rate
 *	X	1		1		1		1		Once per second
 *	X	1		1		1		0		Alarm when seconds match
 *	X	1		1		0		0		Alarm when min, sec match
 *	X	1		0		0		0		Alarm when hour, min, sec match
 *	0	0		0		0		0		Alarm when date, h, m, s match
 *	1	0		0		0		0		Alarm when DoW, h, m, s match
 *
 *	Dy	A2M4	A2M3	A2M2	Rate
 *	X	1		1		1		Once per minute (at seconds = 00)
 *	X	1		1		0		Alarm when minutes match
 *	X	1		0		0		Alarm when hours and minutes match
 *	0	0		0		0		Alarm when date, hour, min match
 *	1	0		0		0		Alarm when DoW, hour, min match
 */

Вы тудыть передаёте 0, что значит:

*	0	0		0		0		0		Alarm when date, h, m, s match

Будильник взведётся только по совпадению даты, часа, минуты, секунды. Осталось убедиться, что параметры, которые вы передаёте при установке будильника - отражают время в будущем, что в вашем случае - не так.

Sakolua
Offline
Зарегистрирован: 13.08.2019

"Эта ножка у вас подключена куда нибудь?"
какая еще ножка? я же написал - без прырвания будет опросом!
"Какую именно?"
я специально написал авторов в 1 посте
"что именно он печатает"
ну очевидно же "returns T/F accordingly" как пишет автор
"Там же коммент есть"
Где?
"тудыть передаёте 0"
ну да, у автора так в примере было
"отражают время в будущем, что в вашем случае - не так"
Почему? я же ставлю всего на 20 сек вперед.
А все дни, часы и т.д у меня такие же.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Sakolua пишет:

Почему? я же ставлю всего на 20 сек вперед.
А все дни, часы и т.д у меня такие же.

А первым параметром, который суть есть "день" - вы чего передаёте? Не нолик ли случаем? Кто из нас двоих тупит?

Sakolua
Offline
Зарегистрирован: 13.08.2019

Т.е. это потому что у меня ADay день аларма - 0 ?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Sakolua пишет:

Т.е. это потому что у меня ADay день аларма - 0 ?

Я вам дал цитату из заголовочного файла вашей библиотеки, где чётко сказано, при каких условиях сработает будильник, если флаги равны нулю. Почитайте сообщение выше, и подумайте - совпадает ли переданный вами в настройки будильника номер дня с текущим номером дня часов.

Проверить - гораздо быстрее, чем затеивать переписку ;)

Sakolua
Offline
Зарегистрирован: 13.08.2019

Понятно, копать надо было в эти ALARM_BITS ну и дату.
Такой теперь вопрос возник - checkIfAlarm срабатывает, но я правильно понимаю, что она сразу же сбрасывает регистр? И два раза подряд 1 не покажет?

bool DS3231::checkIfAlarm(byte Alarm) {
    byte result;
    byte temp_buffer = readControlByte(1);
    if (Alarm == 1) {
        result = temp_buffer & 0b00000001;
        // clear flag
        temp_buffer = temp_buffer & 0b11111110;
    } else {
        result = temp_buffer & 0b00000010;
        // clear flag
        temp_buffer = temp_buffer & 0b11111101;
    }
    writeControlByte(temp_buffer, 1);
    return result;
}

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

В коде всё более чем очевидно, и вы правильно ответили на свой вопрос.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sakolua пишет:

"Какую именно?"
я специально написал авторов в 1 посте

Простите, Вы тролль, Или идиот?

Вы правда думаете, что я сейчас всё брошу и полезу перерывать весь интернет в поисках библиотеки именно от этого автора? Вам трудно дать ссылку?

Sakolua пишет:

"что именно он печатает"
ну очевидно же "returns T/F accordingly" как пишет автор

Я не видел кода и для меня это совершенно неочевидно. Кроме того, мне всё равно какой код у автора и что он печатает, меня интересует Ваш код, а не его. У него, наверное, работает, а у Вас - нет.

В общем так, Вы сейчас выкладываете

1. Ссылку на библиотеку
2. ВАШ код, копипастом из IDE
3. ВАШУ печать, копипастом из окна монитора.

Если Вам это трудно, то помогайте себе сами.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

4. И схему включения.