РЕШЕНО Опрос микросхемы реального времени

Тема в разделе "Микроконтроллеры AVR", создана пользователем Рокки1945, 29 апр 2021.

  1. Рокки1945

    Рокки1945 Гуру

    Здравствуйте!
    Прошу подсказать как лучше организовать получение времени с DS3231.
    В моей программе начало и конец таймера необходимо сверять с часами минутами и секундами микросхемы реального времени - если они совпали то задействовать таймер и активировать выход микроконтроллера.
    Будет ли нормой если в основном цикле каждый раз будет вызов считывания времени с DS3231?
    Или лучше предусмотреть таймер раз в 500 млс для этого?
    Спасибо.
     
  2. akl

    akl Гуру

    на это у дс3231 должен быть выход который можно настроить чтоб он тикал раз в секунду и повесить на вход атмеги, при желании с прерыванием. тогда можно время ваще один раз спрашивать при запуске.
     
    Рокки1945 нравится это.
  3. Рокки1945

    Рокки1945 Гуру

    SQW - ?
     
  4. Feofan

    Feofan Нерд

    SQW. А в общем, смотря какие интервалы и общая логика, можно использовать Alarm1 или Alarm2 и оно будет куковать в определенное время.
     
    Последнее редактирование: 30 апр 2021
    Рокки1945 нравится это.
  5. Рокки1945

    Рокки1945 Гуру

    и то верно
     
  6. Рокки1945

    Рокки1945 Гуру

    У меня не совсем таймер - скорее расписание в одно время должен стартануть в другое выключиться.
    Пока делаю на сравнении с текущим временем - вариант с 2 будильниками тоже годен.
     
  7. Feofan

    Feofan Нерд

    Может быть достаточно и одного.
     
    Рокки1945 нравится это.
  8. Рокки1945

    Рокки1945 Гуру

    То есть сначала один будильник настроил на время старта - а потом переконфигурировал на время конца...
    Надо подумать - спасибо... Пока в мегу 328 и сравнение легко помещается - но переменных уже много.
     
  9. akl

    akl Гуру

    сравнение в лоб не очень хороший вариант. если атмега считает секунду по своим внутренним часам, и каждую секунду спрашивает время у модуля, то вполне возможна такая ситуация, что секунда атмеги будет чуть больше чем секунда модуля, тогда рано или поздно будет так:
    реальное время: 123.95 с - ответ: 123 секунды.
    реальное время: 124.97 с - ответ: 124 секунды.
    реальное время: 125.99 с - ответ: 125 секунд.
    реальное время: 127.01 с - ответ: 127 секунд.
    вот секунда и пропала.

    то есть либо надо спрашивать чаще чем раз в секунду, либо делать проверку не == а >=
    но вообще я считаю теребонькать модуль каждую секунду это как-то избыточно. можно хотя б раз в минуту. Но лучший вариант - вывести вышеупомянутый сигнал на прерывание.
     
    Andrey12 нравится это.
  10. Рокки1945

    Рокки1945 Гуру

    у меня пока иначе если час совпал - если минута совпала - и если секунда совпала в цикле - разве скорости шины не хватит...
     
  11. akl

    akl Гуру

    то есть прям без перерыва модуль теребонькается 100500 раз в секунду? ну тогда не пропустит точно. но это как-то неприятно смотрится как мне кажется чисто эстетически :oops:
     
    Daniil, Andrey12 и Рокки1945 нравится это.
  12. Рокки1945

    Рокки1945 Гуру

    А разве микроконтроллеры не работают в таком же режиме?
    Постоянно опрашивают состояния портов да много ещё чего.
    Просто если с этой стороны посмотреть...
    Я где-то согласен с этим
    но это как-то неприятно смотрится как мне кажется чисто эстетически
    но хочется разумного объяснения - почему незя...
    Наверное применю таймер и раз в 200 млс буду считывать время - так себе компромисс
     
    Последнее редактирование модератором: 30 апр 2021
  13. Feofan

    Feofan Нерд

    А что сие устройство делает между выключенным и включенным состоянием "таймера"? Каков интервал?
     
  14. Рокки1945

    Рокки1945 Гуру

    Это недельный таймер со своим стартом и концом. Например в понедельник ему надо активировать релюхой нагрузку в 7 утра а выключиться в 8 вечера и т.д..
    Считывает до совпадения состояние регистров дня недели, часа, минуты и секунды ....
     
  15. Feofan

    Feofan Нерд

    Т.е. наличие RTC обязательно.
     
  16. parovoZZ

    parovoZZ Гуру

    ачотакова? Криминала нет никакого.
     
    Andrey12 нравится это.
  17. Рокки1945

    Рокки1945 Гуру

    Да
     
  18. Feofan

    Feofan Нерд

    Каким образом предполагается устанавливать расписание?
     
  19. Рокки1945

    Рокки1945 Гуру

    посылка для старта таймера понедельник - часы минуты и секунды
    посылка для конца таймера понедельник - часы минуты и секунды
    если надо чтобы было активно - флаг
    -----------------------------------------------------------------------------------------------
    посылка для старта таймера воскресенье - часы минуты и секунды
    посылка для конца таймера воскресенье - часы минуты и секунды
    если надо чтобы было активно - флаг
     
  20. Andrey12

    Andrey12 Гик

    Да криминала то нет но есть как правильно сказал akl отсутствие эстетики. Нафига часы то дрючить? А потом захочется от батарейки работать, и чтоб не менять ее каждый день....

    И вот для этого и придумали прерывания, тем более что в модуле часов прерывание есть.
     
    Daniil и Рокки1945 нравится это.