Forum: Mikrocontroller und Digitale Elektronik Unixzeit aus RTC


von Richard D. (richyrich)


Lesenswert?

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ß

von Rahul, der Trollige (Gast)


Lesenswert?

>Vorstellbar wäre auch die normale Uhrzeit in die Unixzeit umzurechnen
Dann ja.

von Richard D. (richyrich)


Lesenswert?

Ahh..ok

Also kann ich die nicht direkt aus der RTC holen!?

Geht also nur über umrechnen..


Gruß

von Nilp (Gast)


Lesenswert?

Unixzeit ? UTC ?

N.

von Rahul, der Trollige (Gast)


Lesenswert?

>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.

von Richard D. (richyrich)


Lesenswert?

@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ß

von Rahul, der Trollige (Gast)


Lesenswert?


von Richard D. (richyrich)


Lesenswert?

hmm...

hat schon jemand so eine Umrechnung von hand gemacht?

Eine fertige Formel würde mir weiterhelfen.

Gruß

von holm (Gast)


Lesenswert?

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

von Richard D. (richyrich)


Lesenswert?

@holm,

leider nicht realisierbar. Ich muss die Uhrzeit im Controller umrechnen.

Gruß

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

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...

von Rahul, der Trollige (Gast)


Lesenswert?

>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.

von Rahul, der Trollige (Gast)


Lesenswert?

>Das kommt ganz auf Deine C-Bibliothek an.

Was soll Bascom mit C-Bibliotheken anfangen?

von bluebrother (Gast)


Lesenswert?

Das Problem mit der Umrechnung sind dann nur noch Schaltjahre ...

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

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...

von Richard D. (richyrich)


Lesenswert?

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ß

von Rahul, der Trollige (Gast)


Lesenswert?

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?

von Richard D. (richyrich)


Lesenswert?

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.

von Rahul, der Trollige (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.