Forum: Mikrocontroller und Digitale Elektronik Builtdatum speichern!


von Ingo (Gast)


Lesenswert?

Hallo,
welche Möglichkeit gibt es, das Builtdatum unter Atmelstudio 6.1 beim 
Compilieren in eine Variable zu speichern?

So stelle ich mir das vor:
1
Datum.Tag = Kompilierdatumstag;
2
Datum.Monat = ...
3
...
4
...

Geht sowas? Zur Zeit mach ich das per Hand, geht das irgenwie eleganter?


Ingo

von GGast (Gast)


Lesenswert?

DATE_ und _TIME geht nicht?

von Peter D. (peda)


Lesenswert?

1
#include <avr/pgmspace.h>
2
#include "_version.h"
3
4
prog_uint8_t Version[] __attribute__((used));
5
prog_uint8_t Version[] = PROJECT_STRING ", "
6
                         "V:" REVISION_STRING ", "
7
       __DATE__ "\n";
8
9
prog_uint8_t Author[] __attribute__((used));
10
prog_uint8_t Author[] =   "Peter Dannegger";

von Ingo (Gast)


Lesenswert?

GGast schrieb:
> DATE_ und _TIME geht nicht?
Kenn ich leider nicht!


@Peter
kannst du dazu was erzählen, ich blicke leider nicht durch!



Ingo

von Syntax (Gast)


Lesenswert?

Ingo schrieb:
> Kenn ich leider nicht!

dann geh zu google, du fauler sack... da liefert dir schon jemand die 
lösung auf dem silbertablett und du bist du dumm/faul, das nachzulesen?
lol!

von Ingo (Gast)


Lesenswert?

Syntax schrieb:
> da liefert dir schon jemand die lösung auf dem silbertablett
Wo? Is ja nicht so das ich nicht bereits geguckt hätte!

von Ingo (Gast)


Lesenswert?

Ich habs ja gefunden was es macht, aber ich weiss nicht wie man es 
anwendet!

von Ingo (Gast)


Lesenswert?

So etwa?
[c]

unsigned char Zeit[] = _TIME?;

von Ingo (Gast)


Lesenswert?

Habs hinbekommen! Danke:
Im header
1
#define BUILD_HOUR_CH0  ((__TIME__[0]) - '0')
2
#define BUILD_HOUR_CH1  ((__TIME__[1]) - '0')
3
4
#define BUILD_MIN_CH0 ((__TIME__[3]) - '0')
5
#define BUILD_MIN_CH1 ((__TIME__[4]) - '0')
6
7
#define BUILD_YEAR_CH0 ((__DATE__[ 7]) - '0')
8
#define BUILD_YEAR_CH1 ((__DATE__[ 8]) - '0')
9
#define BUILD_YEAR_CH2 ((__DATE__[ 9]) - '0')
10
#define BUILD_YEAR_CH3 ((__DATE__[10]) - '0')
11
12
#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n')
13
#define BUILD_MONTH_IS_FEB (__DATE__[0] == 'F')
14
#define BUILD_MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r')
15
#define BUILD_MONTH_IS_APR (__DATE__[0] == 'A' && __DATE__[1] == 'p')
16
#define BUILD_MONTH_IS_MAY (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y')
17
#define BUILD_MONTH_IS_JUN (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n')
18
#define BUILD_MONTH_IS_JUL (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l')
19
#define BUILD_MONTH_IS_AUG (__DATE__[0] == 'A' && __DATE__[1] == 'u')
20
#define BUILD_MONTH_IS_SEP (__DATE__[0] == 'S')
21
#define BUILD_MONTH_IS_OCT (__DATE__[0] == 'O')
22
#define BUILD_MONTH_IS_NOV (__DATE__[0] == 'N')
23
#define BUILD_MONTH_IS_DEC (__DATE__[0] == 'D')
24
25
#define BUILD_MONTH_CH0 \
26
((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? 1 : 0)
27
28
#define BUILD_MONTH_CH1 \
29
(  \
30
(BUILD_MONTH_IS_JAN) ? 1 : \
31
(BUILD_MONTH_IS_FEB) ? 2 : \
32
(BUILD_MONTH_IS_MAR) ? 3 : \
33
(BUILD_MONTH_IS_APR) ? 4 : \
34
(BUILD_MONTH_IS_MAY) ? 5 : \
35
(BUILD_MONTH_IS_JUN) ? 6 : \
36
(BUILD_MONTH_IS_JUL) ? 7 : \
37
(BUILD_MONTH_IS_AUG) ? 8 : \
38
(BUILD_MONTH_IS_SEP) ? 9 : \
39
(BUILD_MONTH_IS_OCT) ? 0 : \
40
(BUILD_MONTH_IS_NOV) ? 1 : \
41
(BUILD_MONTH_IS_DEC) ? 2 : \
42
/* error default */    '?' \
43
)
44
45
46
#define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : 0)
47
#define BUILD_DAY_CH1 ((__DATE__[ 5]) - '0')
im Source:
1
  Kalender.Tag = BUILD_DAY_CH0 * 10 + BUILD_DAY_CH1;
2
  Kalender.Monat = BUILD_MONTH_CH0 * 10 + BUILD_MONTH_CH1;
3
  Kalender.Jahr = BUILD_YEAR_CH0 * 1000 + BUILD_YEAR_CH1 * 100 + BUILD_YEAR_CH2 * 10 + BUILD_YEAR_CH3;
4
  
5
6
  Uhr.Stunde = BUILD_HOUR_CH0 *10 + BUILD_HOUR_CH1;
7
  Uhr.Minute = BUILD_MIN_CH0 * 10 + BUILD_MIN_CH1;

von spess53 (Gast)


Lesenswert?

Hi

>#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && 
__DATE__[2] == 'n')

Kennt GCC keine Formatangaben? Im Assembler des AVR-Studios habe ich 
z.B.
für den Monat die Auswahl

%m - Month number (01-12)

%b - Abbreviated month name

%B - Full month name

MfG Spess

von Klugscheisser (Gast)


Lesenswert?

Ingo schrieb:
> #define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? (__DATE__[4]) : 0)

Dann aber konsistent:

#define BUILD_DAY_CH0 ((__DATE__[4] >= '0') ? ((__DATE__[4])-'0') : 0)

Klugscheisser

von Peter D. (peda)


Lesenswert?

Wofür braucht man sowas?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.