Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Микроконтроллеры других производителей

Микроконтроллеры других производителей Все, что касается микроконтроллеров и НЕ подошло в раздел Microchip.

Ответ
 
Опции темы Опции просмотра
Старый 02.02.2015, 10:29   #1
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию time.h для микроконтроллеров

Здравствуйте, уважаемое сообщество!
Интересует такой вопрос: кто-нибудь пользуется стандартной библиотекой time.h для микроконтроллеров (вообще интересует STM32, но и вообще тоже будет интересно)? Для Windows все понятно, а вот для микроконтроллеров очень мало информации. И что-то я не пойму, как ею пользоваться. Есть количество тиков в секунду, куда-то в прерывание должна вставляться функция, инкрементирующая тики... Но мне что-то кажется, что эта стандартная библиотека сильно отстала от аппаратной части модуля RTC того же STM32.

PS: Часы-календарь на STM32 у меня функционирует, питается от ионистора, использую SPL, с этим все в порядке. Интересует только практика применения time.h.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 02.02.2015, 12:06   #2
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 34
Сообщений: 1,108
Вес репутации: 3551/75
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Я использую для преобразования времени с навигационного приёмника в time_t.

Там железякозависимых, только clock и stime - вот их самому написать и полагается, как я понимаю.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 02.02.2015, 12:53   #3
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от yeskela Посмотреть сообщение
Я использую для преобразования времени с навигационного приёмника в time_t.

Там железякозависимых, только clock и stime - вот их самому написать и полагается, как я понимаю.
Спасибо! Я так и понял, что нужно ручками прописывать что-то. Структура time_t в ARMCC есть, функция clock() тоже, функции stime() нет. Смотрел заголовочник time.h для компилятора C30, сравнил c ARMCC, похоже, что эта стандартная библиотека аппаратнозависимая и для разных компиляторов отличается.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 02.02.2015, 14:28   #4
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 34
Сообщений: 1,108
Вес репутации: 3551/75
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Смотрел заголовочник time.h для компилятора C30, сравнил c ARMCC,
ну, в общем и целом time.h относится к стандартной библиотеке С, которая реализуется на каждой платформе по своему, но должна вести себя одинаково.

А по поводу железнозависимых функций - надо смотреть доку на реализацию stdlib. Например для xc32 1.21 (/doc/MPLAB C32 Libraries.pdf, p.75) имеем:
Цитата:
gettimeofday (User Provided)
Remarks: This helper function should interact with the target environment and
write the current processor time in seconds and microseconds to tv.
It is not provided by default, but is required by clock and time..
Т.е. явно прописано, что за ф-ю ты должен реализовать, чтобы clock работал.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 02.02.2015, 18:50   #5
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 32
Сообщений: 2,091
Вес репутации: 3340/91
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Есть библиотека для использования RTC в STM32, писанная где-то в недрах ST, там всё вроде бы есть. Насчёт стандартности представления данных ничего сказать не могу.
Вложения
Тип файла: rar RTC Driver.rar (11.8 Кб, 7 просмотров)
Romantic вне форума   Ответить с цитированием
Старый 02.02.2015, 19:48   #6
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Romantic Посмотреть сообщение
Есть библиотека для использования RTC в STM32, писанная где-то в недрах ST, там всё вроде бы есть. Насчёт стандартности представления данных ничего сказать не могу.
Спасибо! Ознакомлюсь!
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 02.02.2015, 19:52   #7
Romantic
Senior Member
 
Аватар для Romantic
 
Регистрация: 13.07.2007
Адрес: Ленинград
Возраст: 32
Сообщений: 2,091
Вес репутации: 3340/91
Romantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond reputeRomantic has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Забыл прикрепить AN'ку сразу, выкладываю сюда
Миниатюры
AN2821 STM RTC Clock-Calendar Implementation.pdf  
Romantic вне форума   Ответить с цитированием
Старый 02.02.2015, 23:20   #8
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,641
Вес репутации: 5137/156
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Romantic Посмотреть сообщение
Есть библиотека для использования RTC в STM32, писанная где-то в недрах ST, там всё вроде бы есть. Насчёт стандартности представления данных ничего сказать не могу.
это для (obsolete) серии 1xx. там часы были сделаны как генератор секундовых тиков и нужно было программно из лонга тиков вычислять календарь.
в сериях с 2xx сделали железный календарь и теперь получить те же секундовые пульсы в прерываниях от часового кварца вообще невозможно.
Greg вне форума   Ответить с цитированием
Старый 03.02.2015, 00:48   #9
Vovka
Senior Member
 
Аватар для Vovka
 
Регистрация: 27.12.2007
Адрес: недалеко от г.Белгорода
Возраст: 50
Сообщений: 1,828
Вес репутации: 2631/80
Vovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond reputeVovka has a reputation beyond repute
Отправить сообщение для Vovka с помощью ICQ
По умолчанию Re: time.h для микроконтроллеров

с 32-м пока не сталкивался, но в чем проблема, если написать свое вместо библиотеки? В чем сложность?
__________________
Настройся на хороший день и он таким будет!
Vovka вне форума   Ответить с цитированием
Старый 03.02.2015, 09:27   #10
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Vovka Посмотреть сообщение
с 32-м пока не сталкивался, но в чем проблема, если написать свое вместо библиотеки? В чем сложность?
Написать свое не сложно, только смысла в этом мало, т.к. много чего уже написано и стандартизировано. И если ты не можешь понять как работает стандартное (что это и как этим пользоваться), то зачем писать свое. Имеет смысл писать свое тогда, когда нужно сделать нечто большее, превосходящее по функциональности некий стандарт.
Часы-календарь у меня работают без основного питания от ионистора, дата и время устанавливаются:
а) по интерфейсу связи (протокол Modbus RTU) с помощью ПО для Windows;
б) с клавиатуры девайса через меню, отображаемое на дисплее;
т.о. мне есть (и без этого) что написать самому (часы-календарь - это не основная функция девайса). Меня интересует практика применения библииотеки time.h. Потому, что она почти везде есть и я хочу знать, как ею пользоваться.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 03.02.2015, 10:49   #11
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Написать свое не сложно, только смысла в этом мало, т.к. много чего уже написано и стандартизировано. И если ты не можешь понять как работает стандартное (что это и как этим пользоваться), то зачем писать свое. Имеет смысл писать свое тогда, когда нужно сделать нечто большее, превосходящее по функциональности некий стандарт.
Не всегда... зачастую наоборот, нужно сделать упрощенную версию функции... например, чтобы не использовать printf с сжираемыми ей ресурсами.
__________________

Vanizma вне форума   Ответить с цитированием
Старый 03.02.2015, 13:01   #12
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Vanizma Посмотреть сообщение
Не всегда... зачастую наоборот, нужно сделать упрощенную версию функции... например, чтобы не использовать printf с сжираемыми ей ресурсами.
Про printf() соглашусь, особенно в случае вывода float-ов, когда выводят числа, которые укладываются в диапазон unsigned short...1.2345 12.345 1234.5. Ну или 000,0...999,9 и используют для вывода float.
Речь о другом: вот у STM32 модуль RTC позволяет получить значения долей секунд (sub-seconds синхронизированных с секундами), а стандартная библиотека не знает о существоании sub-seconds. И тут можно допилить, чтобы в нужный момент получать время с долями, например 12:58:59.99. Думаю, что этот способ удобнее, чем синхронизировать с секундами отдельный счетчик в прерывании.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 03.02.2015, 13:03   #13
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Про printf() соглашусь, особенно в случае вывода float-ов, когда выводят числа, которые укладываются в диапазон unsigned short...1.2345 12.345 1234.5. Ну или 000,0...999,9 и используют для вывода float.
Речь о другом: вот у STM32 модуль RTC позволяет получить значения долей секунд (sub-seconds синхронизированных с секундами), а стандартная библиотека не знает о существоании sub-seconds. И тут можно допилить, чтобы в нужный момент получать время с долями, например 12:58:59.99. Думаю, что этот способ удобнее, чем синхронизировать с секундами отдельный счетчик в прерывании.
а разве в time.h нету миллисекунд?
Я не работал с ней, но должны быть по идее, т.к. NTP позволяет синхронизироваться с точностью в миллисекундах
__________________

Vanizma вне форума   Ответить с цитированием
Старый 03.02.2015, 14:23   #14
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Vanizma Посмотреть сообщение
а разве в time.h нету миллисекунд?
Я не работал с ней, но должны быть по идее, т.к. NTP позволяет синхронизироваться с точностью в миллисекундах
В той, что я использую (time.h armcc) нет. Структура такая:
Код:
struct tm {
    int tm_sec;   /* seconds after the minute, 0 to 60
                     (0 - 60 allows for the occasional leap second) */
    int tm_min;   /* minutes after the hour, 0 to 59 */
    int tm_hour;  /* hours since midnight, 0 to 23 */
    int tm_mday;  /* day of the month, 1 to 31 */
    int tm_mon;   /* months since January, 0 to 11 */
    int tm_year;  /* years since 1900 */
    int tm_wday;  /* days since Sunday, 0 to 6 */
    int tm_yday;  /* days since January 1, 0 to 365 */
    int tm_isdst; /* Daylight Savings Time flag */
    union {       /* ABI-required extra fields, in a variety of types */
        struct {
            int __extra_1, __extra_2;
        };
        struct {
            long __extra_1_long, __extra_2_long;
        };
        struct {
            char *__extra_1_cptr, *__extra_2_cptr;
        };
        struct {
            void *__extra_1_vptr, *__extra_2_vptr;
        };
    };
};
И если бы поле миллисекунд было в структуре, то сами бы они туда не попадали, ручками дописывть пришлось бы. Я думал, что подключу библиотеку time.h и получу время с миллисекундами.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 03.02.2015, 14:45   #15
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/98
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Pridnya Посмотреть сообщение
В той, что я использую (time.h armcc) нет. Структура такая:
Код:
struct tm {
    int tm_sec;   /* seconds after the minute, 0 to 60
                     (0 - 60 allows for the occasional leap second) */
    int tm_min;   /* minutes after the hour, 0 to 59 */
    int tm_hour;  /* hours since midnight, 0 to 23 */
    int tm_mday;  /* day of the month, 1 to 31 */
    int tm_mon;   /* months since January, 0 to 11 */
    int tm_year;  /* years since 1900 */
    int tm_wday;  /* days since Sunday, 0 to 6 */
    int tm_yday;  /* days since January 1, 0 to 365 */
    int tm_isdst; /* Daylight Savings Time flag */
    union {       /* ABI-required extra fields, in a variety of types */
        struct {
            int __extra_1, __extra_2;
        };
        struct {
            long __extra_1_long, __extra_2_long;
        };
        struct {
            char *__extra_1_cptr, *__extra_2_cptr;
        };
        struct {
            void *__extra_1_vptr, *__extra_2_vptr;
        };
    };
};
И если бы поле миллисекунд было в структуре, то сами бы они туда не попадали, ручками дописывть пришлось бы. Я думал, что подключу библиотеку time.h и получу время с миллисекундами.
Может это для RFC 868 ?
AleksBak вне форума   Ответить с цитированием
Старый 03.02.2015, 14:57   #16
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от AleksBak Посмотреть сообщение
Может это для RFC 868 ?
Не знаю, может и для него сгодится. Но миллисекунд в ней нет.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 03.02.2015, 15:02   #17
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Не знаю, может и для него сгодится. Но миллисекунд в ней нет.
в линуховом time.h есть миллисекунды
__________________

Vanizma вне форума   Ответить с цитированием
Старый 03.02.2015, 15:08   #18
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/98
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Vanizma Посмотреть сообщение
в линуховом time.h есть миллисекунды
Даже отдельно демон работает вроде и т.д.... А у тебя NTP только до секунд? Или это не NTP? Или пока не работал с ним?
AleksBak вне форума   Ответить с цитированием
Старый 03.02.2015, 15:11   #19
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от AleksBak Посмотреть сообщение
Даже отдельно демон работает вроде и т.д.... А у тебя NTP только до секунд? Или это не NTP? Или пока не работал с ним?
у меня секунды пока, не нужно было меньше. и SNTP.

Но про 0,01 секунды уже подумываю
__________________

Vanizma вне форума   Ответить с цитированием
Старый 03.02.2015, 15:24   #20
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/98
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Vanizma Посмотреть сообщение
у меня секунды пока, не нужно было меньше. и SNTP.

Но про 0,01 секунды уже подумываю
Понятно. Спасибо. А вот если секунды, то зачем тогда вообще этот STNP? RFC 868 вроде хватает тогда полностью. Интересно получится ли нормально 0,01 секунды точности достичь? Но если что-то написали (напр. микрочиповцы) значит и получалось.
AleksBak вне форума   Ответить с цитированием
Старый 03.02.2015, 16:20   #21
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Vanizma Посмотреть сообщение
в линуховом time.h есть миллисекунды
Спасибо за подсказку! Миллисекунд не нашел, зато нашел хорошее описание. Имена функций совпадают (в этом описании и в библиотеке time.h armcc), тепрь хоть понятно, зачем она нужна:
время хранится в секундах с 1900-го года (число типа long) и от числа можно легко перейти к структуре "дата-время", включающей недели, день в году, летнее время.... И от структуры обратно в число. Т.е. удобно обмениваться временем. А миллисекунды можно при желании получить из RTC STM32 (sub-seconds).
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 03.02.2015 в 16:25.
Pridnya вне форума   Ответить с цитированием
Старый 03.02.2015, 16:32   #22
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Спасибо за подсказку! Миллисекунд не нашел, зато нашел хорошее описание. Имена функций совпадают (в этом описании и в библиотеке time.h armcc), тепрь хоть понятно, зачем она нужна:
время хранится в секундах с 1900-го года (число типа long) и от числа можно легко перейти к структуре "дата-время", включающей недели, день в году, летнее время.... И от структуры обратно в число. Т.е. удобно обмениваться временем. А миллисекунды можно при желании получить из RTC STM32 (sub-seconds).
да, там не миллисекунды, а микросекунды. Как и откуда берутся - не знаю,
http://pubs.opengroup.org/onlinepubs...ys_time.h.html

но можно в исходниках линуха же покапаться
__________________

Vanizma вне форума   Ответить с цитированием
Старый 03.02.2015, 16:51   #23
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от Vanizma Посмотреть сообщение
да, там не миллисекунды, а микросекунды. Как и откуда берутся - не знаю,
http://pubs.opengroup.org/onlinepubs...ys_time.h.html

но можно в исходниках линуха же покапаться
Максимальное разрешение по времени, которое можно получить от модуля RTCC STM32 из через пересчет SS около 30 мкс. А мне достаточно 0,01 секунды. Т.е. аппаратную часть и буду использовать для "добывания" долей (и мне не нужны микросекунды).
Кроме того, нашел удобный для себя и стандартный способ хранения и синхронизации времени. Раньше не пользовался.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 04.02.2015, 10:53   #24
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,425
Вес репутации: 4370/119
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Код:
// *************************************************************************************************** 
// Компилятор ARMCC
// Переменную the_time нужно инициализировать, иначе МК зависнет при вызове (void)time(&the_time);
time_t the_time = 1422962735;      // Время в секундах.
struct tm *tm_ptr;          // Указатель на структуру с полями.
struct tm tmm;                // Структура с полями.

tmm.tm_hour = 15; // 15 часов. Если задать только часы, то функция mktime() вернет -1.
tmm.tm_min = 25;  // 25 минут.
tmm.tm_sec = 35;  // 35 секунд.
tmm.tm_mon = 1;   // Февраль.
tmm.tm_mday = 3;  // 03 февраля
tmm.tm_year = 115;// 1900+115=2015 год.
tmm.tm_yday = 33; // День в году 33-й (03 февраля).
tmm.tm_wday = 2;  // Вторник.
tmm.tm_isdst = 0; //             

// Из структуры получили UTC (используется библиотека time.h ARMCC).
the_time = mktime(&tmm);
printf("the_time=%d\n", the_time);
//the_time=1422977135

tm_ptr = &tmm;
    
printf("date: %02d/%02d/%02d\n", tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday); 
// date: 115/02/03

printf("time: %02d:%02d:%02d\n",tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
// time: 15:25:35

tm_ptr = gmtime(&the_time); // Ф-я gmtime()???

printf("date222: %02d/%02d/%02d\n", tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday); 
// date222: 134218303/134218302/134218299

printf("time222: %02d:%02d:%02d\n",tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
// time222: 134218297:134218289:536872624

tm_ptr = localtime(&the_time); // 
printf("date333: %02d/%02d/%02d\n", tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday); 
// date333: 115/02/03

printf("time333: %02d:%02d:%02d\n",tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
// time333: 15:25:35

//char *asctime(const struct tm * /*timeptr*/)
printf("Str01 = %s\n", asctime(&tmm));
// Str01 = Tue Feb  3 15:25:35 2015

//char *ctime(const time_t * /*timer*/)
printf("Str02 = %s\n", ctime(&the_time));
// Str02 = Tue Feb  3 15:25:35 2015

// *************************************************************************************************** //
// Компилятор MinGW
Raw time is = 1422977135
gmtime gives:
date: 115/2/3
time: 15:25:35
yday wday mon isdst: 33:2:1:0

localtime gives:
date: 115/2/3
time: 19:25:35
Raw time (mktime) is = 1422962735

// *************************************************************************************************** //
Компилятор ARMCC: почти все, что нужно работает, только gmtime() ерунду дает, а функция localtime() выдает время UTC без поправки на местное. Кто-нибудь знает как задать поправку на местное время (должна где-то задаваться в часах, у нас +3 должно быть, а вот компилятор MinGW дает +4).
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 20.02.2015, 13:17   #25
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,125
Вес репутации: 2885/98
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: time.h для микроконтроллеров

Цитата:
Сообщение от yeskela Посмотреть сообщение
ну, в общем и целом time.h относится к стандартной библиотеке С, которая реализуется на каждой платформе по своему, но должна вести себя одинаково.

А по поводу железнозависимых функций - надо смотреть доку на реализацию stdlib. Например для xc32 1.21 (/doc/MPLAB C32 Libraries.pdf, p.75) имеем:

Т.е. явно прописано, что за ф-ю ты должен реализовать, чтобы clock работал.
А можно вопрос - Вы вообще использовали какие-либо функции из <time.h> для PIC32 ?
AleksBak вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с программным кодом Yevgeniy_F Вопросы начинающих 212 01.08.2013 06:52
Скриншот с дисплея устройства: модуль для генерации bmp dimonomid Своими руками 32 20.12.2012 06:34
Имитатор DS18B20 Filya44 Вопросы начинающих 14 12.03.2012 17:39
господа, где добыть для ознакомпления среду разработки для FUJITSU dynaco Общетехнические вопросы 2 04.06.2007 06:10


Часовой пояс GMT +3, время: 10:38.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot