RTC в atmega164
RTC в atmega164
Добрый день
поясните пож. работу RTC .
по даташиту мне стало ясно , что для работы используется дополнительный кварц на 32 кгц, и таймер-2.
не понятно следующее - как ведется счет минут,часов,дней, лет, и т.п. или же это нужно вычислять програмно , исходя из значения таймер-2?
--
Спасибо.
поясните пож. работу RTC .
по даташиту мне стало ясно , что для работы используется дополнительный кварц на 32 кгц, и таймер-2.
не понятно следующее - как ведется счет минут,часов,дней, лет, и т.п. или же это нужно вычислять програмно , исходя из значения таймер-2?
--
Спасибо.
- Реклама
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: RTC в atmega164
только программно
обычно таймер настраивают на 1 или 0,5 сек и в прерывании считают
обычно таймер настраивают на 1 или 0,5 сек и в прерывании считают
Re: RTC в atmega164
то есть, если МК занят чемто и пропущено прерывание, то возникнет ошибка во времени?GP1 писал(а):только программно
обычно таймер настраивают на 1 или 0,5 сек и в прерывании считают
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: RTC в atmega164
Если все сделано правильно прерывание не может быть пропущено, на то оно и прерывание.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: RTC в atmega164
покажи мне ту задачу, которая будет непрерывно выполняться с временем больше чем 1 сек.
даже при 1 МГц тактовой за 1сек МК будет выполнять 700-800 ТЫСЯЧ инструкций.
задача программиста как раз в том и состоит чтобы грамотно распределить ресурсы
даже при 1 МГц тактовой за 1сек МК будет выполнять 700-800 ТЫСЯЧ инструкций.
задача программиста как раз в том и состоит чтобы грамотно распределить ресурсы
- Реклама
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: RTC в atmega164
к этим словам надо добавить "при запрещенных прерываниях".GP1 писал(а):покажи мне ту задачу, которая будет непрерывно выполняться с временем больше чем 1 сек.
битва с дураками проиграна, победители торжествуют. слава победителям!
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: RTC в atmega164
я же ж написал: "непрерывно"Мастер Ломастер писал(а):к этим словам надо добавить "при запрещенных прерываниях".
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: RTC в atmega164
я понял "непрерывно" буквально: for(i=0; i<1000;i++); будет непрерывно выполняться, пока не досчитает до 1000, т.е. последовательное исполнение программы будет задержано. а прерывания - "боковая" ветвь, и о них надо гооврить особо. имхо.GP1 писал(а):я же ж написал: "непрерывно"Мастер Ломастер писал(а):к этим словам надо добавить "при запрещенных прерываниях".
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: RTC в atmega164
а если прерывание запрещено например на 10 мсек, и в это время приходит прерывание от часов - оно потеряется?GP1 писал(а):я же ж написал: "непрерывно"Мастер Ломастер писал(а):к этим словам надо добавить "при запрещенных прерываниях".
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: RTC в atmega164
нет, не потеряется. хотя и 10 мс для запрета прерываний - это довольно много.igor-x писал(а):а если прерывание запрещено например на 10 мсек, и в это время приходит прерывание от часов - оно потеряется?
битва с дураками проиграна, победители торжествуют. слава победителям!
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: RTC в atmega164
Для каждого прерывания есть бит с своем регистре флагов. Так что потеряться может только если прерывание два или более раз успеет случиться.
Re: RTC в atmega164
Это не RTC, это называется "асинхронный режим работы таймера". Когда таймер считает не импульсы от системной шины (которые кратны частоте кварца или другого источника), а от собственного генератора. Просто этот режим очень часто используют для реализации RTC.igor-x писал(а): поясните пож. работу RTC .
по даташиту мне стало ясно , что для работы используется дополнительный кварц на 32 кгц, и таймер-2.
не понятно следующее - как ведется счет минут,часов,дней, лет, и т.п. или же это нужно вычислять програмно , исходя из значения таймер-2?
Соответственно все вычисления нужно делать программно. Если всё организовать грамотно, не выполнять в прерываниях длительных действий, ничего не потеряется, точность хода будет зависеть только от кварца. Но при этом получаем кучу дополнительных фишек, например как программную коррекцию, переходы на зимнее/летнее время (актуально для наших братьев с Украины), и на что еще фантазии хватит.
Так же можно сделать RTC и от обычного "системного" кварца, используя 16-битный таймер в режиме CTC - ничего принципиально не изменится...
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: RTC в atmega164
кроме возможности значительно экономить энергию путем погружения МК в сон - при работе от обычных кварцев потребляется куда больше энергии, чем с часовым.ploop писал(а):Так же можно сделать RTC и от обычного кварца, используя 16-битный таймер в режиме CTC - ничего принципиально не изменится...
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: RTC в atmega164
Кстати да, если будет использоваться спящий режим, то однозначно таймер в асинхронном режиме запускать надо.
Re: RTC в atmega164
не потеряется - это хорошо, но возникнет отставание на 10 мсек(или менее ) - если я правильно понял,то после прерывания необходимо перезарядить таймер.?Мастер Ломастер писал(а): нет, не потеряется. хотя и 10 мс для запрета прерываний - это довольно много.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: RTC в atmega164
не возникнет - с чего бы вдруг? при правильном построении программы и соответствующих настройках таймера ничего перезаряжать не потребуется.igor-x писал(а):не потеряется - это хорошо, но возникнет отставание на 10 мсек(или менее ) - если я правильно понял,то после прерывания необходимо перезарядить таймер.?
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: RTC в atmega164
Нет, таймер же не останавливается, он продолжает считать, он железный.igor-x писал(а):не потеряется - это хорошо, но возникнет отставание на 10 мсек(или менее ) - если я правильно понял,то после прерывания необходимо перезарядить таймер.?Мастер Ломастер писал(а): нет, не потеряется. хотя и 10 мс для запрета прерываний - это довольно много.
Допустим прерывание происходит раз в секунду. И тут вдруг одно задержится на 0,1 сек (грубо, просто чтобы понять). Значит следующее возникнет через 0,9 сек, а не через 1 сек.
Только если у вас прерывание задержать на время больше секунды - одно потеряется (флаг-то один, он как стоял так и будет стоять). Но это надо на столько криворуким быть...



