mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik time.h Datei fehlt


Autor: Der Matze (naeschd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey...

Ich benötige die time.h (GCC)... Die Datei ist bei mir aber nicht als 
Standardlib vorhanden. Ich dreh noch durch weil ich sie auch nicht in 
google finde...

Könnte mir die bitte jemand kurz posten oder hochladen?
Vielen Dank
Matze

Autor: Unbekannt Unbekannt (unbekannter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Könnte mir die bitte jemand kurz posten oder hochladen?

Kein Problem. Hier ist sie (der Bereich zwischen BEGIN und END):

--- BEGIN  ---


--- END --

Hoffe geholfen zu haben!

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast du den GCC (welche Version?) installiert? Windows oder Linux?

Autor: Der Matze (naeschd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das neueste WinAVR installiert (20090313). Dann habe ich AVR 
Studio 4.18 installiert.
Alles unter Windows 7...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wofür benötigst du time.h?

Das Fehlen diese Headers mag wohl daran liegen, dass eine Standard-Uhr 
auf einem AVR nicht vorausgesetzt werden kann und sich jeder 
Programmierer sowieso seine eigenen Uhrenroutinen selber schreibt um zb 
32 Bit Arithmetik zu umgehen.
Und die Konvertier- und Formatierfunktionen: na ja. Die schreibt sich 
soweiso jeder selber bzw sie sind unnötig, weil man eben einen Zeitwert 
auf einem AVR geschickter Weise nicht als 32-Bit long speichert.

Schau dir einfach nur mal die struct tm an:
struct tm {
  int tm_sec;  // Sekunden nach der vollen Minute (0, 61)* 
  int tm_min;  // Minuten nach der vollen Stunde (0, 59) 
  int tm_hour; // Stunden seit Mitternacht (0, 23) 
  int tm_mday; // Tage im Monat (1, 31) 
  int tm_mon;  // Monate seit Januar (0, 11) 
  int tm_year; // Jahre seit 1900 
  int tm_wday; // Tage seit Sonntag (0, 6) 
  int tm_yday; // Tage seit dem 1. Januar (0, 365) 
  int tm_isdst; // Kennzeichen für Sommerzeit 
};

alles int. Wer sowas auf einem AVR macht, sollte sofort eine mit einem 
nassen Fetzen verpasst bekommen.

Autor: Der Matze (naeschd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Und wofür benötigst du time.h?

Um Zufallszahlen zu erzeugen

Autor: Hannes Jaeger (pnuebergang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
time.h muss laut C-Standard bei "freestanding" Umgebungen (Umgebungen 
ohne Betriebssystem) nicht vorhanden sein. Der AVR ist so eine Umgebung 
und es gibt keine time.h.

Wer weiß was in time.h drin sein muss sieht auch sofort warum. Der Rest 
stimmt an dieser Stelle immer das große Gejammer "könnte man nicht ...?" 
an.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Matze schrieb:
> Karl heinz Buchegger schrieb:
>> Und wofür benötigst du time.h?
>
> Um Zufallszahlen zu erzeugen

Aha.
Und wie soll sich eine Library aus einer nicht existenten Realtime-Clock 
die Uhrzeit aus den Fingern saugen?

Autor: Der Matze (naeschd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich denn dann am einfachsten Zufallszahlen mit GCC erzeugen?

Ist bestimmt einfach aber ich brauch einfach nen kurzen Anstoß.
Danke!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Matze schrieb:
> Wie kann ich denn dann am einfachsten Zufallszahlen mit GCC erzeugen?

rand()
ist schon ok.

Die Frage ist: womit seedest du den Generator ganz am Anfang. Wenn du 
nichts anderes hast, dann nimm eine Konstante.
Du kannst auch am Anfang eine Variable ständig hochzählen, bis der 
Benutzer eine Taste drückt und diese Zahl dann als Seed benutzen.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lt. ANSI-C gibt es eine Funktion rand() und eine srand() in stdlib.h.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, khb war mal wieder schneller.

Man könnte auch im EEPROM einen Wert bei jedem Neustart
auslesen und weitersetzen, und den für srand() nehmen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Lt. ANSI-C gibt es eine Funktion rand() und eine srand() in stdlib.h.

:-)
Ich versteh schon was sein Problem ist.

Er hat des Öfteren gesehen (und das ist durchaus üblich so)
int main()
{

  srand( time( NULL ) );

...

Tja. Nur so wird das auf seinem AVR nichts. Es gibt nun mal keine 
aktuelle Uhrzeit :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:

> Man könnte auch im EEPROM einen Wert bei jedem Neustart
> auslesen und weitersetzen, und den für srand() nehmen.

Gute Idee. Daran hab ich wieder nicht gedacht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.