Difference between revisions of "Embedded II/2016 Oktobers"
From Teknologisk videncenter
m (→C) |
m (→Board) |
||
(15 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Board= | =Board= | ||
*[[MCBSTM32C]] | *[[MCBSTM32C]] | ||
+ | *[http://www.keil.com/pack/doc/CMSIS/General/html/index.html CMSIS Help] | ||
+ | *[http://www.keil.com/pack/doc/mw/Network/html/index.html CMSIS Network help] | ||
+ | **NTP server for eksempel 83.90.47.30 | ||
=C= | =C= | ||
*[http://phy.ntnu.edu.tw/~cchen/pdf/ctutor.pdf ctutor.pdf] | *[http://phy.ntnu.edu.tw/~cchen/pdf/ctutor.pdf ctutor.pdf] | ||
*[[C programming]] (Local articles) | *[[C programming]] (Local articles) | ||
+ | *[[Const and volatile type qualifiers]] | ||
+ | |||
+ | = Tids opgave= | ||
+ | *[[STM32F107VC/Using the RTC Real Time Clock|Using the RTC Real Time Clock]] | ||
+ | *[[:Category:Embedded]] | ||
+ | *[[:Category:Time|Category:Time]] | ||
+ | *[https://tools.ietf.org/html/rfc4330 RFC4330 (SNTP)] | ||
+ | *[[STM32F107VC/timer2|Timer 2]] | ||
+ | == Kravspec== | ||
+ | *Tæller UNIX tid i RTC | ||
+ | ** Epoch 1. januar 1970 kl. 00:00 | ||
+ | *Kunne omregne mellem UNIX-tid og mennesketid [[Calendar_standards]] | ||
+ | **Fra UNIX-tid til mennesketid når tiden skal vises | ||
+ | **Fra mennesketid til UNIX-tid når tiden stilles | ||
+ | *Hente tid fra tids-source fx. NTP/SNTP eller/og GPS | ||
+ | ===Facts=== | ||
+ | *Der er 365,2425 dage per år | ||
+ | **Hvert fjerde år er et skudår, med mindre det kan divideres med 100 men ikke 400. | ||
+ | ***År 1900 er ikke skudår men år 2000 er! | ||
+ | *UNIX epoch er 1. januar 1970 kl. 00:00. Det var en torsdag | ||
+ | *Der skal ikke tages hensyn til skudsekunder i dette projekt. | ||
+ | **UNIX epoch er en 32 bit signed integer. Posetive tal er efter 1970 og negative tal før 1970 | ||
+ | *Et skudår har en ekstra dag i februar. (29 februar) | ||
+ | ===Lidt inspiration=== | ||
+ | |||
+ | |||
+ | I et ikke skudår har hver måned disse antal dage | ||
+ | <source lang=c> | ||
+ | //Days in normal year, jan,feb .. dec (Not leap year) | ||
+ | uint8_t const daysmd[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; | ||
+ | </source> | ||
+ | |||
+ | Et eksempel på en total tidsstruktur | ||
+ | <source lang=c> | ||
+ | struct TimeStruct { | ||
+ | uint32_t epoch; // Seconds since 1. jan 1970 00:00:00 | ||
+ | uint32_t tz; // Timezone +/- x seconds from GMT | ||
+ | uint32_t year; // year 1970 to 2106 | ||
+ | uint32_t sec; // seconds 00 to 59 | ||
+ | uint32_t min; // minutes 00 to 59 | ||
+ | uint32_t hour; // hours 00 to 23 | ||
+ | uint32_t mday; // day of the month 1 to 31 | ||
+ | uint32_t mon; // month 0 to 11 | ||
+ | uint32_t wday; // day of the week 0=sunday, 1=monday... | ||
+ | uint32_t isdst; // is Daylight Saving Time (DST) | ||
+ | // isdst: 0 = not dst 1 = dst 2=Not used | ||
+ | uint32_t dstOnMon; // Month (0-11) when DST starts | ||
+ | uint32_t dstOnMday; // Day of month when DST starts | ||
+ | uint32_t dstOnHour; // Hour of the day when DST starts | ||
+ | uint32_t dstOnMin; // Minute of the hour when DST starts | ||
+ | uint32_t dstOffMon; // Month (0-11) when DST ends | ||
+ | uint32_t dstOffMday; // Day of month when DST ends | ||
+ | uint32_t dstOffHour; // Hour of the day when DST ends | ||
+ | uint32_t dstOffMin; // Minute of the hour when DST ends | ||
+ | }; | ||
+ | </source> | ||
[[Category:Embedded]] | [[Category:Embedded]] |
Latest revision as of 11:59, 11 October 2016
Board
- MCBSTM32C
- CMSIS Help
- CMSIS Network help
- NTP server for eksempel 83.90.47.30
C
- ctutor.pdf
- C programming (Local articles)
- Const and volatile type qualifiers
Tids opgave
Kravspec
- Tæller UNIX tid i RTC
- Epoch 1. januar 1970 kl. 00:00
- Kunne omregne mellem UNIX-tid og mennesketid Calendar_standards
- Fra UNIX-tid til mennesketid når tiden skal vises
- Fra mennesketid til UNIX-tid når tiden stilles
- Hente tid fra tids-source fx. NTP/SNTP eller/og GPS
Facts
- Der er 365,2425 dage per år
- Hvert fjerde år er et skudår, med mindre det kan divideres med 100 men ikke 400.
- År 1900 er ikke skudår men år 2000 er!
- Hvert fjerde år er et skudår, med mindre det kan divideres med 100 men ikke 400.
- UNIX epoch er 1. januar 1970 kl. 00:00. Det var en torsdag
- Der skal ikke tages hensyn til skudsekunder i dette projekt.
- UNIX epoch er en 32 bit signed integer. Posetive tal er efter 1970 og negative tal før 1970
- Et skudår har en ekstra dag i februar. (29 februar)
Lidt inspiration
I et ikke skudår har hver måned disse antal dage
//Days in normal year, jan,feb .. dec (Not leap year)
uint8_t const daysmd[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
Et eksempel på en total tidsstruktur
struct TimeStruct {
uint32_t epoch; // Seconds since 1. jan 1970 00:00:00
uint32_t tz; // Timezone +/- x seconds from GMT
uint32_t year; // year 1970 to 2106
uint32_t sec; // seconds 00 to 59
uint32_t min; // minutes 00 to 59
uint32_t hour; // hours 00 to 23
uint32_t mday; // day of the month 1 to 31
uint32_t mon; // month 0 to 11
uint32_t wday; // day of the week 0=sunday, 1=monday...
uint32_t isdst; // is Daylight Saving Time (DST)
// isdst: 0 = not dst 1 = dst 2=Not used
uint32_t dstOnMon; // Month (0-11) when DST starts
uint32_t dstOnMday; // Day of month when DST starts
uint32_t dstOnHour; // Hour of the day when DST starts
uint32_t dstOnMin; // Minute of the hour when DST starts
uint32_t dstOffMon; // Month (0-11) when DST ends
uint32_t dstOffMday; // Day of month when DST ends
uint32_t dstOffHour; // Hour of the day when DST ends
uint32_t dstOffMin; // Minute of the hour when DST ends
};