super_puper 0 18 июня, 2013 Опубликовано 18 июня, 2013 · Жалоба думаю как удобнее работать с датой на мк.. думаю завести переменную в еепроме = время в уникс секундах(с 1970г) в момент сброса таймера секунд.. ну и потом к этой переменной прибавлять количество прошедших секунд... для этого нужны функции перевода 1) даты в юникс секунды 2) юникс секунды в дату Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 18 июня, 2013 Опубликовано 18 июня, 2013 · Жалоба для этого нужны функции перевода 1) даты в юникс секунды 2) юникс секунды в дату #include <time.h> Подробности тут: http://ru.wikipedia.org/wiki/Time.h Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
super_puper 0 18 июня, 2013 Опубликовано 18 июня, 2013 · Жалоба это для компьютеров а мне бы на мк и на языке си Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 июня, 2013 Опубликовано 18 июня, 2013 · Жалоба это для компьютеров а мне бы на мк и на языке си Язык "C" для МК ничем не отличается от оного для компьютера. Библиотека стандартная и тоже является частью языка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shamil 2 18 июня, 2013 Опубликовано 18 июня, 2013 · Жалоба 2) юникс секунды в дату Решение для этого случая было здесь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kil00 0 18 июня, 2013 Опубликовано 18 июня, 2013 · Жалоба http://ru.wikipedia.org/wiki/Юлианская_дата http://stackoverflow.com/questions/1002542...-timestamp-in-c недавно сам разбирался, только с NTP-временем, - 1-ая ссылка очень полезна в плане понимания, откуда берётся время (+ перевод unixtime_to_datetime) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Cosmojam 0 18 июня, 2013 Опубликовано 18 июня, 2013 · Жалоба 1) даты в юникс секунды 2) юникс секунды в дату 1) mktime() http://linux.die.net/man/3/mktime 2) time(), ctime(), strftime() http://linux.die.net/man/2/time И не надо собственных велосипедов. Стандартная библиотека Си имеет всё необходимое для этих задач. Единственное отличие на МК - получаете текущее время не вызовом time(NULL), а из собственного источника (RTC, например). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
super_puper 0 19 июня, 2013 Опубликовано 19 июня, 2013 (изменено) · Жалоба всё не то в результате нужно получить из количества секунд год мес день час мин сек а в примерах только половина этих данных вычисляется ито у меня не получилось результата. линуксовые функции тоже грамоздкие на структурах. придется самому написать.. я думал такого уже полно везде а ещё в мануале написанно что RTC у stm32 может календарь вести аппаратно.. а как пока не нашел примеров.( Изменено 19 июня, 2013 пользователем super_puper Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shamil 2 19 июня, 2013 Опубликовано 19 июня, 2013 · Жалоба всё не то в результате нужно получить из количества секунд год мес день час мин сек а в примерах только половина этих данных вычисляется... Чтобы получить часы, минуты и секунды (то чего не хватает в моем примере) надо сделать следующее: unsigned int UnixTime; // Исходное кол-во секунд с 00:00:00 c 1-го января 1970 года unsigned int Second = UnixTime % 60; unsigned int Minutes = (UnixTime / 60) % 60; unsigned int Hours = (UnixTime / 3600) % 24; P.S. Да еще забыл, мой пример считает дату исходя из кол-во секунд с 00:00:00 1-го января 2000-го года, а не 1970-го. Что бы считать с 1970-го надо первую строчку функции u_int32 d = SecondQn / 86400 + 2451544; заменить на: u_int32 d = SecondQn / 86400 + 2440587; Вот еще ссылка на описание алгоритмов перевода Юлианской даты в Григорианскую и обратно. Для проверки алгоритмов преобразования, удобно использовать вот этот онлайн калькулятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
super_puper 0 19 июня, 2013 Опубликовано 19 июня, 2013 (изменено) · Жалоба большое вам спасибо что подробно разжевали! всё заработало! дописал только : Second = SecondQn % 60; Minutes = (SecondQn / 60) % 60; Hours = (SecondQn / 3600) % 24; Изменено 20 июня, 2013 пользователем super_puper Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться