Easyelectronics.ru

Электроника для всех
Текущее время: 20 янв 2021, 22:54

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Работа с датами для ATmega
СообщениеДобавлено: 30 янв 2010, 20:49 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
Как я уже писал, я делаю супер монстра. Написал кучку функций работы с датой. Если кому интересно, могу продолжить.

Ну, например, количество дней в месяце (DT_MONTH):

Параметры - месяц (DT_MONTH) и високосность года (DT_LEAP), которое 1 в високосном году или 0 в обычном:

Размер: 11 слов
Время: от 5 до 7 тактов + ret

Код:
KaDtMonthDays:
    cpi     DT_MONTH, 2
    breq    _KaDtMonthDays_feb

    cpi     DT_MONTH, 8
    brlo    _KaDtMonthDays_aug
    dec     DT_MONTH

_KaDtMonthDays_aug:
    andi    DT_MONTH, 1
    subi    DT_MONTH, -30
    ret

_KaDtMonthDays_feb:
    mov     DT_MONTH, DT_LEAP
    subi    DT_MONTH, -28
    ret


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 30 янв 2010, 22:20 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:55
Сообщения: 5572
Откуда: Уругвайская АССР
А в «Юлианскую Дату» и обратно перевод есть?

_________________
Без гнева и жестокости, сегодня Смерть взмахнёт косой, и ангел тайными дорогами мой милый Кубик унесёт с собой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 31 янв 2010, 02:27 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
Нету. Просто не знаю, зачем это нужно. Если считать количество дней, то нужно знать страну (они все в разное время переходили).

По хорошему, тогда надо переходить на линейную дату, боюсь мозги 64 битную арифметику плохо потянут (по времени).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 31 янв 2010, 22:21 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:55
Сообщения: 5572
Откуда: Уругвайская АССР
Вот я ж и написал. Не«Юлианский Календарь», а «Юлианская Дата». Вот что про неё пишут:
Цитата:
Юлианская дата - это количество дней, прошедших с полудня 1-го января 4713 г. до н.э. Эта дата произвольна и была избрана лишь для согласования различных систем летоисчисления.

То бишь, линеаризованное представление времени... Про него и спрашивал.
Как сказано выше, отправная точка может быль любой, вплоть до 1 января 2000г. Тогда 64бита не потребуется.

_________________
Без гнева и жестокости, сегодня Смерть взмахнёт косой, и ангел тайными дорогами мой милый Кубик унесёт с собой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 01 фев 2010, 03:45 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
Про такой день - не знал. Но всё равно преобразование должно идти через линейную дату. Может быть, когда нибудь напишу, но не для этого изделия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 01 фев 2010, 14:48 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
В некоторых системах биллинга (например, американских телексных станций) используется "Юлианская дата" (порядковый номер дня от начала текущего года). Для нас они потом дополнительно по нашей просьбе сделали еще поле и в формате ДеньМесяцГод. Я в 90х годах в своих программах обсчета биллинга делал типа календарика для пересчета дат туда и обратно. К примеру, 17 декабря прошлого года в нем выглядит как 352.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 01 фев 2010, 16:07 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
Не, юлианская дата - это несколько не то - это количество дней с ... (ArgusB там выше написал), причем дата в плавучке. А порядковый номер дня я и так вычисляю - это нужно для вычисления дня недели при установке часов и просмотре календаря. Хотя... , американцы многое не так называют.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 01 фев 2010, 19:26 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:46
Сообщения: 125
Откуда: г. Буча, Киевская обл., Украина
А Вот это дело на АВР_асме никто не реализовывал?
Т.е. получить чудо-пакет, и пересчитать его в текущее время/дату.

_________________
-||devil was an angel too||-
-||world is a ghetto||-


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 01 фев 2010, 20:23 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Еще оригинальный формат даты используется в UNIX. Там за точку отсчета принята дата официального "рождения" этой системы (что-то вроде в 1970г). С тех пор и тикают системные таймеры, считая тики с того момента в одном длинном числе. Счетчик этот переполнится кажется в 2036 году... Была у меня морока с этим форматом при работе с некоторыми сетевыми базами.
У американцев все не как у людей. Дюймы, футы, барели... Хотя Метрическую Конвенцию в 19 веке в Париже они подписали в числе 10 стран (в том числе и Россия). Но американцы никогда не выполняют законов, которые подписывают...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 01 фев 2010, 21:43 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:55
Сообщения: 5572
Откуда: Уругвайская АССР
Подобный формат используется вообще везде, где есть время. И у виндов похожий формат, там единицей является микросекунда, начало аж в 1601 году.
http://msdn.microsoft.com/en-us/library/ms724284%28VS.85%29.aspx
Цитата:
FILETIME Structure
Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).


Линеаризованный формат времени хорош тем, что позволяет производить арифметические действия над временем.

2 THE BEAST В плавучке? Имеется в виду флоат? На он тут нужен, время от природы целочисленное.

_________________
Без гнева и жестокости, сегодня Смерть взмахнёт косой, и ангел тайными дорогами мой милый Кубик унесёт с собой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 02 фев 2010, 00:56 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
DeVOuR писал(а):
А Вот это дело на АВР_асме никто не реализовывал?
Т.е. получить чудо-пакет, и пересчитать его в текущее время/дату.


Что-то я не понял, про какой пакет идёт речь. Если про структуру tm - там уже всё есть, нужно просто вывести. Все "железные" часы (RTC) используют похожий формат, ну может только в BCD.

ArgusB писал(а):
Линеаризованный формат времени хорош тем, что позволяет производить арифметические действия над временем.


Но, к сожалению, совсем не располагает к пересчёту его в "нормальный" вид. Для PC у меня есть собственная библиотека работы с линейными датами практически всех форматов, а вот для AVR это слишком жёстко по математике. Для AVR я использую структуру, похожую RTC и увеличиваю её каждую секунду. Худший случай - 153 такта.

ArgusB писал(а):
2 THE BEAST В плавучке? Имеется в виду флоат? На он тут нужен, время от природы целочисленное.


Ну да, целочисленное, количество 9 192 631 770 периодов излучения... (можно и в них линейное время считать). Вот только астрономы считают юлианскую дату как число дней + дробное время дня. Кстати, так же (в флоат) считает/хранит время VBA.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 02 фев 2010, 01:46 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:46
Сообщения: 125
Откуда: г. Буча, Киевская обл., Украина
THE BEAST писал(а):
Что-то я не понял, про какой пакет идёт речь.

Пакет - бо обычно время получают с какого либо сервера, то я так неявно выразился. Имеется ввиду всемирное время = к-во секунд с 1-го января 00:00:00 01.01.1970-го года в hex.
В принципе там ничего сложного. Я в течении недели-двух доберусь до этого момента - синхронизации времени с сервером, на авр_асме.
К тому же, уже делал такое на Delphi.

Просто спросил для галочки. :)
А там, смотри, и код кто-то выложит :-Р То не буду велосипед изобретать :))

_________________
-||devil was an angel too||-
-||world is a ghetto||-


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 02 фев 2010, 02:24 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:55
Сообщения: 5572
Откуда: Уругвайская АССР
Окидоки. Тогда, как изобретешь, велосипед - в студию?

_________________
Без гнева и жестокости, сегодня Смерть взмахнёт косой, и ангел тайными дорогами мой милый Кубик унесёт с собой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с датами для ATmega
СообщениеДобавлено: 02 фев 2010, 02:33 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:46
Сообщения: 125
Откуда: г. Буча, Киевская обл., Украина
Без проблем :)

Вы не подумайте, я вообще никогда не клянчу готовые решения.
Но если есть возможность заюзать что-то готовое, которое работает - то естественно, как и многие здесь, я ее использую.
И всегда, начиная делать что-то, что уже 100% когдато писалось кем-то я гуглю , долго и упорно :)

Как в инсте научили :)

_________________
-||devil was an angel too||-
-||world is a ghetto||-


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB