Am Puls der Zeit

Aus Ethersex_Wiki
Version vom 28. März 2009, 11:09 Uhr von Stella (Diskussion | Beiträge) (Seite importiert.)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Ethersex am Puls der Zeit

Viele Mikrocontroller-Projekte kommen irgendwann an den Punkt, wo eine (halbwegs) verlässliche Zeitquelle von Nöten ist. Sei es, dass man um eine bestimmte Uhrzeit eine Lampe schalten möchte, die Heizungssteuerung morgens für Warmwasser sorgen soll oder dass man alle halbe Stunde einen Messwert speichert ...

Wie könnte es anders sein, Ethersex bietet hierfür eine elegante Lösung: eine Systemuhr :-)

make menuconfig

Applications  --->
  System clock  --->
  | |                [*] System clock support                                     |  
  | |                [ ] Use 32 kHz crystal to tick the clock                     |  
  | |                [*] Synchronize using NTP protocol                           |  
  | |                [*] Cron daemon                                              |  
  | |                [ ] NTP daemon                                               |  
  | |                [ ] Working hour meter                                       |  
  | |                (UTC) Time Zone                                            | |  

Der Uhrentakt

Wenn irgendwie möglich, solltest Du Deinem Ethersex einen Uhrenquarz mit einer Taktfrequenz von 32 kHz spendieren (an die Pins TOSC1 resp. TOSC2 anschließen, im Falle des ATmega644 sind das PC6 und PC7) und die Option Use 32 kHz crystal to tick the clock aktivieren. Die Systemuhr läuft mit dem Uhrenquarz erheblich genauer.

Ohne dem Quarz wird der Systemtakt als Quelle herangezogen. Dieser ist aber im Vergleich weit weniger genau.

Zeitquellen

Selbstverständlich muss sich die Uhr selbst stellen. Der Controller wäre weitestgehend nutzlos wenn jedesmal die Uhr per Hand eingestellt werden müsste. Ethersex sieht hierzu im Moment zwei Lösungsansätze vor:

Synchronisation mittels NTP

Ethersex kann als NTP-Client einen Zeitserver im Internet nach der Uhrzeit fragen. Hierzu ist lediglich die Option Synchronize using NTP protocol zu aktivieren. Die Firmware frägt dann nach dem Boot und anschließend in regelmäßigen Abständen den folgenden Zeitserver:

address type DNS aktiviert ohne DNS Unterstützung
IPv6 time6.ipv6.uni-muenster.de 2001:638:500:101::2e0:4bff:fe04:bc5f
IPv4 pool.ntp.org 213.133.123.125

Die standardmäßig festgelegten Server können in der Datei 'ntp/ntp.h' aber auch abgeändert werden.

DCF77

Die Ethersex-Firmware kann auch als DCF77-Empfänger (besser bekannt als "Funkuhr") fungieren. Hierzu ist zunächst ein Uhrenquarz anzuschließen und die zugehörige Option zu aktivieren, vgl. oben. Dann muss die Option Synchronize using DCF77 signal aktiviert werden. Funktionstüchtige (Empfangs-)hardware und guten Empfang vorausgesetzt, sollte die Uhr nun automatisch gestellt werden.

Der Hardwareaufbau will hier noch beschrieben werden.

Zeitinformationen verwenden

Cron

Ethersex hat einen Cron-Dienst ähnlich dem Dienst auf typischen Unix-Systemen. Dieser kann verwendet werden, um zu bestimmten Uhrzeiten bestimmte Tätigkeiten verrichten zu lassen.

Die Jobtabelle selbst findet sich in der Datei cron/cron.c ziemlich am Anfang. Es ist auch ein Beispieljob eingetragen. Selbstverständlich sind hierzu dann zumindest rudimentäre Programmierkenntnisse in C erforderlich %)

Eine (einfachere) Alternative wäre evtl. der Einsatz eines ((6Control)) Programms.

NTP-Server

Die Ethersex Firmware kann die so gewonnenen Zeitinformationen als NTP-Server auch im lokalen Netzwerk zur Verfügung stellen. Hierzu ist lediglich die Option NTP daemon zu aktivieren.