Hallo, ist es möglich eine Unixzeit aus einer RTC zu holen? Vorstellbar wäre auch die normale Uhrzeit in die Unixzeit umzurechnen. Hat schon jemand damit Erfahrungen gemacht? Das ganze sollte mit Basocm zu realisieren sein. Gruß
>Vorstellbar wäre auch die normale Uhrzeit in die Unixzeit umzurechnen
Dann ja.
Ahh..ok Also kann ich die nicht direkt aus der RTC holen!? Geht also nur über umrechnen.. Gruß
>Also kann ich die nicht direkt aus der RTC holen!?
Dazu müsstest du eine RTC finden, die die Uhrzeit in diesem Format
ausgibt.
Die RTCs mit denen ich mich bisher beschäftigt habe, spucken die Uhrzeit
meist im BCD-Format aus.
Die Unixtime ist ja nichts anderes als die Sekunden seit dem 1.1.1970
(?).
Eine Uhr in einem Controller zu implementieren ist Pippifax, und sollte
auch in Bascom kein Problem darstellen. Da braucht man keine RTC mehr,
ausser man nutzt sie so, wie vorgesehen: Im ausgeschalteten Zustand des
Gerätes durch eine kleine Pufferbatterie noch weiter zu laufen. Alles
andere ich Quatsch.
@rahul, merci, für die schnellen Antworten. Genau so ist es. Ich hab die RTC-8564 an einem Atmega128. Gepuffert über nen Cap. Hast du vielleich Infos darüber wie ich bei der Berechnung vorgehen muß, um aus dem "normalen" Format in die Unixtime zu kommen!? Gruß
hmm... hat schon jemand so eine Umrechnung von hand gemacht? Eine fertige Formel würde mir weiterhelfen. Gruß
Schicke die Zeit irgendwie über eine "COM" Schnittstelle zum Unix und nimm die Zeit dort auseinander. Die notwendigen Routinen zur Umrechnung in die Unixzeit sind bestandteil der Unix C Standarbibliothek. (mktime) Gruß, Holm
@holm, leider nicht realisierbar. Ich muss die Uhrzeit im Controller umrechnen. Gruß
Das kommt ganz auf Deine C-Bibliothek an. die avr-libc bietet soweit ich weis fertige Funktionen dafür. Schau mal - falls es sie gibt - in der time.h nach...
>Ich muss die Uhrzeit im Controller umrechnen.
Du musst ja "nur" die Differenz zwischen der aktuellen Uhrzeit (aus der
RTC) und dem 1.1.1970 berechnen...
Jetzt: 25.01.2007 11:13:37
Jahr: 2007-1970 = 27
Monat: 01-01 = 0
Tag: 25-01 = 24
Stunde: 11-0 = 11
Minute: 13-0 = 13
Sekunde: 37-0 = 37
Sekunden seit 1.1.07 0:00:
((24*24+11)*60+13)*60+37)
Beim Monat wird das natürlich komplizierter. Dazu kann man dann eine
Tabelle benutzen...
Bei den Jahren muß man halt die Schaltjahre beachten...
Einfach mal die Links im. og.g Wikipedia-Artikel durchgehen.
>Das kommt ganz auf Deine C-Bibliothek an.
Was soll Bascom mit C-Bibliotheken anfangen?
Rahul, der Trollige wrote: >>Das kommt ganz auf Deine C-Bibliothek an. > > Was soll Bascom mit C-Bibliotheken anfangen? Tja, wird wohl wieder Zeit für 'nen Termin beim Augenarzt...
Hab was zur Berechnung der Schaltjahre gefunden: Function Schaltjahr(Jahreszahl) If (Jahreszahl Mod 4) = 0 And (Jahreszahl Mod 100) <> 0 Or _ ((Jahreszahl Mod 400) = 0) Then Schaltjahr = True Else Schaltjahr = False End If End Function Gruß
Die Funktion braucht man eigentlich nur, wenn man entscheiden muß, ob der Februar nun 28 oder 29 Tage hat, und diese anzeigen will. Was willst du überhaupt mit der Unixtime?
Rahul, der Trollige wrote: > Die Funktion braucht man eigentlich nur, wenn man entscheiden muß, ob > der Februar nun 28 oder 29 Tage hat, und diese anzeigen will. > > Was willst du überhaupt mit der Unixtime? Ich muss möglichst Platzsparend einen Zeitstempel abspeichern.
>Ich muss möglichst Platzsparend einen Zeitstempel abspeichern.
Und warum dann die Unix-Zeit? (da gibt es 2038 einen Überlauf...)
Ich mache das so, dass ich zu Beginn einer Messreihe die aktuelle
Uhrzeit im EEPROM speichere und dann nur noch die Sekunden (wenn
überhaupt nötig) zähle. Dann kann ich bei einer Auswertung auf die
vorher gespeicherte Zeit referenzieren. Das spart noch mehr Platz.
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.