DS3231 не могу запустить будильник
- Войдите на сайт для отправки комментариев
Пт, 31/01/2020 - 21:39
Использую бибиотеку 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 показывает правильное время, но когда оно настает - ничего не происходит.
Что не так?
Использую бибиотеку 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)
Эта ножка у вас подключена куда нибудь?
Использую бибиотеку DS3231:
Какую именно? Их 100500. У неё ссылка есть?
Что не так?
Скетч не опубликован. Также не опубликовано что именно он печатает (что там всегда 1, а что не один).
Там же коммент есть, по поводу битов для будильника:
Вы тудыть передаёте 0, что значит:
Будильник взведётся только по совпадению даты, часа, минуты, секунды. Осталось убедиться, что параметры, которые вы передаёте при установке будильника - отражают время в будущем, что в вашем случае - не так.
"Эта ножка у вас подключена куда нибудь?"
какая еще ножка? я же написал - без прырвания будет опросом!
"Какую именно?"
я специально написал авторов в 1 посте
"что именно он печатает"
ну очевидно же "returns T/F accordingly" как пишет автор
"Там же коммент есть"
Где?
"тудыть передаёте 0"
ну да, у автора так в примере было
"отражают время в будущем, что в вашем случае - не так"
Почему? я же ставлю всего на 20 сек вперед.
А все дни, часы и т.д у меня такие же.
Почему? я же ставлю всего на 20 сек вперед.
А все дни, часы и т.д у меня такие же.
А первым параметром, который суть есть "день" - вы чего передаёте? Не нолик ли случаем? Кто из нас двоих тупит?
Т.е. это потому что у меня ADay день аларма - 0 ?
Т.е. это потому что у меня ADay день аларма - 0 ?
Я вам дал цитату из заголовочного файла вашей библиотеки, где чётко сказано, при каких условиях сработает будильник, если флаги равны нулю. Почитайте сообщение выше, и подумайте - совпадает ли переданный вами в настройки будильника номер дня с текущим номером дня часов.
Проверить - гораздо быстрее, чем затеивать переписку ;)
Понятно, копать надо было в эти 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;
}
В коде всё более чем очевидно, и вы правильно ответили на свой вопрос.
"Какую именно?"
я специально написал авторов в 1 посте
Простите, Вы тролль, Или идиот?
Вы правда думаете, что я сейчас всё брошу и полезу перерывать весь интернет в поисках библиотеки именно от этого автора? Вам трудно дать ссылку?
"что именно он печатает"
ну очевидно же "returns T/F accordingly" как пишет автор
Я не видел кода и для меня это совершенно неочевидно. Кроме того, мне всё равно какой код у автора и что он печатает, меня интересует Ваш код, а не его. У него, наверное, работает, а у Вас - нет.
В общем так, Вы сейчас выкладываете
1. Ссылку на библиотеку
2. ВАШ код, копипастом из IDE
3. ВАШУ печать, копипастом из окна монитора.
Если Вам это трудно, то помогайте себе сами.
4. И схему включения.