bei winavr lassen sich ja mit MFile sehr nette makefiles erstellen. Der Prozessortakt ist darin mit einem define als F_CPU deklariert, diese lässt sich dann im code nutzen und wird durch die makefile vorgeschrieben. Ich hab mir ne kleine Uhr für den AVR geschrieben nur leider muss ich immer die startzeit von hand eingeben. Kann man das nicht ins makefile schreiben? So dass ich die stunden,minuten,sekunden im makefile erst definiere und dann während dem compilieren einstelle?
Das sollte eigentlich gehen. Dafür musst du in deinem Quellcode halt sowas wie
1 | stunde = STUNDE; |
2 | minute = MINUTE; |
3 | sekunde = SEKUNDE; |
schreiben, und dann im make-File die CFlags so erweitern: -DSTUNDE = 15 -DMINUTE = 32 -DSEKUNDE = 00 Allerdings sind das dann feste Werte, kann sein dass gcc für die Uhrzeit auch Variablen hat. Müsste man mal inna Doku gucken.
jup das hab ich mir auch so gedacht aber kann ich mir nicht die systemzeit im makefile definieren lassen, in linux geht das bestimmt über ein bisschen bash ;)
Sonst schreib dir doch nen kleines Programm in C was Stunde/Minute/Sekunde ausgibt und lass das im Makefile verarbeiten. Oder nimm gleich "date".
Hi! Ich mach sowas ähnliches per script: makebuildis.sh
1 | #!/usr/bin/sh
|
2 | id=`cat .buildid`; |
3 | id=$[$id+1]; |
4 | echo -n $id > .buildid; |
5 | ts=`date +"%H:%m %d/%m/%Y"`; |
6 | |
7 | echo -e "#ifndef _BUILD_H_\n#define _BUILD_H_\n#define BUILD_ID |
8 | \"$id\"\n#define BUILD_TIMESTAMP \"$ts\"\n#endif\n\n" > |
9 | build.h |
.buildid
1 | 1009
|
makebuildid.sh liefert ne build.h:
1 | #ifndef _BUILD_H_
|
2 | #define _BUILD_H_
|
3 | #define BUILD_ID "1009"
|
4 | #define BUILD_TIMESTAMP "12:05 03/05/2006"
|
5 | #endif
|
Die include ich einfach in meinem Projekt und kann dann auf BUILDID etc zugreifen. Im Makefile dann noch:
1 | all: begin gccversion sizebefore buildid build sizeafter finished end |
2 | ...
|
3 | buildid: |
4 | @bash makebuildid.sh |
5 | ...
|
Geht sicher auch einfacher, funktioniert aber ;) (ein make generiert einen neuen Timestamp und zählt die buildid hoch) Bye, Simon
hmm das ist ne schöne sache :) wenn ich mir jetzt cygwin installiere sollte das auch mit windows gehen!
Da Philipp aber WinAVR benutzt würde ich mal sagen, dass er nicht Linux sondern Windows verwendet. Für ihn kommt daher nur ein kleines C-Programm in Frage. Am einfachsten bekommst du dir Uhrzeit über cmd mit dem Befehl "time /T", das könntest du dann über ein kleines C-Programm in das Makefile eintragen lasssen.
da hast du nicht so ganz recht, natürlich kann ich das machen aber cygwin ist ein paket ähnlich wie winavr. Damit kann man viele standardpakete von linux auf dem windows shell laufen lassen. Ich hab das oben genannte skript gerade auf windows ausgeführt und es macht genau was es soll :).
achja Simon, da ist ein fehler in deiner bash script: ts=`date +"%H:%m %d/%m/%Y"`; +"%H:%m gibt STUNDE:MONAT aus, es muss %M heißen für die minuten!
:-X Danke ! Ist bis jetzt noch keinem aufgefallen ggg (benutze das in meinem avrETH projekt) Bye, Simon
ist mir nur dadurch aufgefallen weil zeit und monat irgendwie immer gleich waren ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.