Unixzeit aus RTC

Gast
>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.
OP
@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ß
Gast
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
Gast
>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.
OP
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ß
Gast
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?
OP
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.
Gast
>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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.