- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Compiler-Zeit

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Beiträge
    184

    Compiler-Zeit

    Anzeige

    E-Bike
    Hi,

    Bei Visual C++ kann man sich Datum und Compilier-Uhrzeit Ausgeben lassen, so ne art Zeitstempel.
    Geht das auch in AVR_Studio? Wie?

    Ich möchte wann immer ich meinen Mega32 starte die Programmversion sowie Uhrzeit und Datum des Programms auf einem Display ausgeben. Ich habe schon zu oft einen Fehler im falschen Code gesucht.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo,

    Mit "Normal" C gibt es gibt es diese Präprozessor Konstanten

    Code:
    __LINE__
    __FILE__
    __DATE__
    __TIME__
    Du mußt nur prüfen, ob sie auch bei avr-gcc dabei sind, das weiß ich nähmlich nicht

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Die Compile-Zeit erhält du wie in
    https://www.roboternetz.de/wissen/index.php/Avr-gcc#GCC

    Wenn du die Build-Zeit willst, mach das am besten im Makefile. Date und Time in eine Datei pipen, compileren und dazulinken. Oder du erzwingst die Compilierung des entsprechenden C/C++-Moduls über ein .PHONY.
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Beiträge
    184
    Hi, Danke für die Hilfe

    Aber was genau gibt dieser Ausdruck zurück?

    __DATE__
    Löst auf zum Datum (precompile-date)

    Einen String oder einen Codierten Integer Wert oder lieg ich vollig falsch?
    Wie kann ich das einsetzen?

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Also in "normal" (am PC) C würde ich das so machen :
    Code:
    #include<stdio.h>
    
    int main(void) {
      printf("Wir befinden und is der %i Zeile\n",__LINE__);
      printf("Kompiliert am %s\n",__DATE__);
      printf("Um %s\n",__TIME__);
      return 0;
    }
    nur avr-gcc ...

    Moment mal

    __TIME__ wird vom Präprozessor zu Kompilerzeit ersetzt, habe gerade einen Test gemacht :

    Code:
    const char kompilierzeit[] PROGMEM = __TIME__;
    Hat keinen Fehler ergeben, das ist schon ein gutes Zeichen.
    Am AVR darfst Du das selber ausprobieren

    __TIME__ und __DATE__ sind normale Strings mit diesem Format:
    Code:
    Oct 30 2006
    00:23:51
    Gruß und viel Erfolg

    Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Beiträge
    184
    Danke ich werd es demnächst mal riskieren.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    30.01.2006
    Ort
    Irgendwo im Nirgendwo
    Alter
    50
    Beiträge
    62
    Hi!

    Das geht auf jeden Fall - kannst einfach irgendwo z.B.
    uart_puts_p(PSTR("Build: v1.01 - " __DATE__"\r"));
    einbauen. Einziger Haken: Man muss irgendwie sicherstellen, dass diese Datei immer neu kompiliert wird. Da kommt dann für heute "Build: v1.01 - Oct 30 2006" raus.

    Gruß, Bernd

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo,
    da ich auch sehr schlampig bin, was Verwaltung von Versionen angeht und nach 1 Monat nicht mehr weiß, welche Version jetzt auf dem µC drauf ist und in welchem Code ich den Fehler zu suchen habe, benutze ich schon länger RCS.
    Es ist ein Versionsverwalttungstool, wo man mehrere Versionen einer Datei
    sehr schön bearbeiten kann.
    Hier findet man z.B. eine kurze Beschreibung.
    Das schöne daran ist, daß ich in meinem Code verschiedene Variablen benutzen kann, die Variable $Revision$ wird z.B. im Programm zu der aktuellen Version aufgelöst.
    Bei jedem Checkin wird das natürlich aktualisiert.
    Ich habe es ausprobiert, und es klappt sehr gut, ein
    Code:
    static char vcid[] PROGMEM = "$Revision:$";
    ergibt dann in meinem Display folgende Anzeige :
    Code:
    $Revision: 1.4 $"
    So sehe ich dann direkt, daß ich die Version 1.4 auf dem Prozessor drauf habe, und das ist um einiges besser als __DATE__ was mir das Datum nach jedem Kompilieren verändert.

    Vielleicht ist das was für Dich, ich bin jederfalls froh, durch Deine Anfrage hier darauf gekommenzusein

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Beiträge
    184
    Danke, das mit mit RCS ist mir für meine bescheidenen Anwendungen zu umfangreich da ich den Umgang in den ersten paar Minuten nicht verstanden hab (ist vielleicht was für Profis und welche die in großen Projekten den Überblick behalten wollen.)

    Für mich genügt Datum und Urzeit und ich weiß zumindest das, das was ich übertragen hab auch das ist was ich grad geändert hab. Das funzt jetzt nochmals Danke.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Beiträge
    184
    Hi,

    ist es möglich im AVR Studio einzustellen, dass ein bestimmter Qelltext immer mit Compiliert wird auch wenn sich dieser nicht verändert hat?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress