Просмотр полной версии : Синхронизация часов в радиоприемнике
Здравствуйте!
Если кто имел дело, подскажите, на какой сервер интернет лучше ориентироваться, в вопросе синхронизации часов?
Требуется точность до 1 сек.
Желательно с подробным описание протокола синхронизации.
Настольный интернет радиоприемник с часами и термометром. На базе МК. Аппаратная поддержка Ethernet, программная поддержка TCP/IP, HTTP.
Добавлено через 55 минут(ы):
Ага. Вот уже кто-то делал
http://www.microelemente.ro/MikroPascal/NTP_Clock.JPG
http://www.mikroe.com/forum/viewtopic.php?t=1816 4
Оказывается в моем проекте можно с легкостью включить поддержку протокола сетевого времени.
STACK_USE_SNTP_CLIEN T // Simple Network Time Protocol for obtaining current date/time from Internet
Присутствует в используемой мной библиотеке Microchip TCP/IP stack (http://www.microchip.com/forums/Findpost/720043). Осталось почитать как использовать....
Получаю от SNTP сервера "pool.ntp.org" количество секунд прошедших после 01-января-1970г. 00:00:00
1457719473 сек.
/31536000 = 46 лет.
/86400 = 16871 день.
/3600 = 404922 часов.
/60 = ... минут..
Зная все эти данные вычисляю текущее время для вывода на дисплей интернет радиоприемника, часы и минуты...
Требуется точность до 1 сек.
А для чего Вам такая точность?
На свидание опаздываете:smile:
Не, Слесарь опаздывает на свидание с тепловым насосом и расчетом коэфф. КИХ фильтра.
Получаю от SNTP сервера "pool.ntp.org" количество секунд прошедших после 01-января-1970г. 00:00:00
1457719473 сек.
/31536000 = 46 лет.
...
а высокосные года вы учитывали?
в них же секунд больше
Александр Макеев
12.03.2016, 07:41
И в определённые года добавляли ещё по 1 секунде...
а высокосные года вы учитывали?
в них же секунд больше
Да. Собираюсь найти что то типа CTime для МК где все учтено...
А для чего Вам такая точность?
На свидание опаздываете:smile:
Ага... Буду тестить один из кривых радиолюбительских протоколов связи, требующий синхронизации времени.
secondsUTC = secondsUTC + ( 3 * 3600 ); // коррекция на местное время +3 часв
deys = secondsUTC / 86400; // сколько прошло часов от 01-Jan-1970 00:00:00
hour = secondsUTC / 3600; // сколько часов ...
min = secondsUTC / 60; // сколько минут ...
// текушее время, часы минуты.
hour = hour - (deys * 24);
min = min - (((deys * 24) + hour ) * 60);
На сегодняшний день задача получить текущую дату не стоит, чуть позже так же буду думать...
Слесарь, Вы по какому календарю определяете свое месторасположение во временно-пространственном континнуме, по Григорианскому (от "Ветхого" или "Нового" Заветов) или по астрономическому (с учетом ЧТО и ОТО, или без оных). Я предпочитаю систему Барона Мюнхгаузена (в лице Олега Янковского), если 32 июля раз в 1000 лет никому не нужно, на что его почитатели с печалью сказали, смотря, на что он выпадает, если на понедельник 13, на фига нам лишний понедельник, а у меня по понедельникам жалование выдают.
Вы по какому календарю определяете
* Simple Network Time Protocol (SNTP) Client Version 3
* Module for Microchip TCP/IP Stack
* -Locates an NTP Server from public site using DNS
* -Requests UTC time using SNTP and updates SNTPTime structure
* periodically, according to NTP_QUERY_INTERVAL value
* - Reference: RFC 1305
*
******************** ******************** ******************** *********
* FileName: SNTP.c
* Dependencies: UDP, ARP, DNS, Tick
* Processor: PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F, PIC32
* Compiler: Microchip C32 v1.05 or higher
* Microchip C30 v3.12 or higher
* Microchip C18 v3.30 or higher
* HI-TECH PICC-18 PRO 9.63PL2 or higher
* Company: Microchip Technology, Inc.
Powered by vBulletin® Version 4.1.12 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot