mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unixzeit aus RTC


Autor: Richard Drie (richyrich)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Vorstellbar wäre auch die normale Uhrzeit in die Unixzeit umzurechnen
Dann ja.

Autor: Richard Drie (richyrich)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahh..ok

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

Geht also nur über umrechnen..


Gruß

Autor: Nilp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unixzeit ? UTC ?

N.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Richard Drie (richyrich)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Richard Drie (richyrich)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm...

hat schon jemand so eine Umrechnung von hand gemacht?

Eine fertige Formel würde mir weiterhelfen.

Gruß

Autor: holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Richard Drie (richyrich)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@holm,

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

Gruß

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das kommt ganz auf Deine C-Bibliothek an.

Was soll Bascom mit C-Bibliotheken anfangen?

Autor: bluebrother (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem mit der Umrechnung sind dann nur noch Schaltjahre ...

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Richard Drie (richyrich)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Richard Drie (richyrich)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.