Sida 1 av 1

time_t i embeded system?

Postat: 29 maj 2012, 23:44:08
av dangraf
Hej!
jag vill som många andra ha en variabel som håller koll på dagens datum. tänkte använda mig av RTC funktionalliteten i min microkontroller.
Det jag funderar på är om man säkert kan använda sin 32 bitars räknare i RTC modulen till time_t variabeln som finns med i <time.h> biblioteket. Det jag hittat hitills är att denna variabel är beroende av vilken kompilator man använder( kan vara 32 el 64 bit, den är 32 bit på mitt system) och att den håller koll på antalet sekunder sedan 1 jan 1970.

Om man sätter RTC modulen till att uppdatera räknaren varje sekund borde det väl bli rätt?

anledningen till denna enkla fråga är att jag sett många som implementerar egna funktioner för RTC modulen som håller koll på antalet dagar i månaden, skottår etc. Även ST har kodexempel där man implementerat egen tid-räkning. Finns det någon hake med att använda det färdiga biblioteket som jag missat?

Mvh/
Daniel Grafström

Re: time_t i embeded system?

Postat: 30 maj 2012, 03:53:10
av blueint
time_t är definierad som antal sekunder sedan Unix epoch 1970-01-01 00:00.00 UTC. Det är dock inte i linje med POSIX standard (såvitt jag förstår). Även NTP avviker från POSIX.
Artikeln om Universal time förklarar de olika klockreferenserna rätt bra. Det som ställer till det är extra sekunder som läggs till för att kompensera för jordrotation mm.

Kort sagt så är det många implementationer (t.ex Linux, FreeBSD) av unix epoch som definierar ett år som 365 eller 366 dagar beroende på skottår och varje dag som exakt 86400 sekunder. Vilket ger en enkel implementation. Mer strikt korrekta implementationer änvänder UTC och dess "extra sekunder" som annonseras 6 månader i förväg. Och är uppe i 25 sekunder sedan 1972.

Så det fungerar bra att göra som du tänkt. ;)