|
|
  |
Переход на зимнее/летнее время, AVRmega + DS1307 |
|
|
|
Aug 16 2008, 19:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Олег Хохлов @ Aug 16 2008, 21:44)  Пусть есть девайс на AVR Mega Ну очень важная информация.... Цитата Как лучше всего... Сам RTC не трогать ни в коем случае (не уподобляйтесь, блин MS!), просто считав из него время при необходимости скорректируйте на лето. Все.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 16 2008, 20:20
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 6-11-07
Пользователь №: 32 085

|
Почему бы просто не зарезервирвать в eeprom контроллера память под флаг "текущее время" (лето или зима). А потом раз в сутки и при включении проверять дату из ds1307 и смотреть, попадает ли она в "текущее время", если нет, то корректируем время и меняем значение флага на противоположное. Места в программе это много не займет...
|
|
|
|
|
Aug 16 2008, 20:36
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
zltigo прав: самое разумное -- держать в DS1307 только время.
Инициатором запросов времени однозначно будет клиентская часть программы МК (так называемая -- бизнес-логика). Думаю, что следует написать код так, чтобы запросы шли не непосредственно к DS1307 (через I2C), а к промежуточному коду, т.е к прослойке между аппаратурой и бизнес-логикой. Назовите этот код драйвером DS1307 и все встанет на свои места. Написать этот код не сложно, сложнее понять (объяснить самому себе) смысл/необходимость этого дополнительного кода.
В драйвере Вы можете прописть все, что хотите. Например, отвечать на запрос клиентской программы учитывая зимнее/летнее время. Зимнее/летнее время учитывается по критерию текущей даты и, соответственно, корректируется или не корректируется динамически при исполнении запроса. В драйвере Вы можете учтывать часовой пояс, который удобно хранить там же -- в ОЗУ DS1307.
Иначе говоря, наличие драйвера, даст Вам свободу маневра. А лезть с коррекцией в DS1307 -- право, не стоит.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Aug 16 2008, 21:13
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(Flasher @ Aug 17 2008, 03:01)  Пользователя при инициализации тоже просить ввести время по гринвичу? ну если этот девайс подключен к инетнету, то, наверно, скорее "да", чем "нет". К сожалению, Олег Хохлов не уточнил, что за устройство. А вообще Цитата В драйвере Вы можете учтывать часовой пояс... выделенное слово следует понимать, как "если Вам это необходимо, то нет препятствий для ..."
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Aug 17 2008, 13:24
|

Частый гость
 
Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168

|
Цитата(zltigo @ Aug 16 2008, 22:48)  Ну очень важная информация.... Сама по себе не очень, но имелась в виду определенная ограниченность в ресурсах (Mega16 уже забита процентов на 80% по коду). Спасибо всем за высказанные мнения. Имевшиеся у меня сомнения по поводу: Цитата(zltigo @ Aug 16 2008, 22:48)  Сам RTC не трогать ни в коем случае (не уподобляйтесь, блин MS!), просто считав из него время при необходимости скорректируйте на лето. Все. были вызваны только тем, что как я уже выше сказал мега уже почти забита, а функции арифметики над датой/временем, которые очевидно нужны для данного варианта реализации, компилируются на меге ну уж в очень печальный код по размеру и эффективности (посмотрел листинг-прослезился). И коррекция времени нужна как при вычитывании времени из RTC, так и при записи времени в RTC. Впрочем, я уже придумал как сделать это оптимальнее. Цитата(zhevak @ Aug 17 2008, 00:13)  ну если этот девайс подключен к инетнету, то, наверно, скорее "да", чем "нет". К сожалению, Олег Хохлов не уточнил, что за устройство.
А вообще
выделенное слово следует понимать, как "если Вам это необходимо, то нет препятствий для ..." Девайс - ну вообще их несколько разных, но все - малые контроллеры, которые чем-нибудь автономным управляют. К интернету разумеется не подключены  Один например - центральный контроллер средств индикации типа светодиодных часов/ценников/стелл и т.д. Другой - самодельный бортовой комп для ВАЗ.
Сообщение отредактировал Олег Хохлов - Aug 17 2008, 13:26
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|