Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Echtzeituhren (RTCs) in Mikrocontroller-Timern

Dieser Artikel ist der dritte einer Serie über Mikrocontroller-Timer, die die RTCs in einem Mikrocontroller beschreibt.

Dieser Artikel ist der dritte einer Reihe über Mikrocontroller-Timer. Der erste Artikel beschreibt die Hauptmerkmale der meisten Timer-Typen und behandelt periodische Timer, und der zweite behandelt MCU-Timer mit Pulsweitenmodulation.

Echtzeituhren (RTC) sind Zeitgeber, die dazu bestimmt sind, eine Zeitbasis von einer Sekunde aufrechtzuerhalten. Darüber hinaus wird eine Echtzeituhr oft verwendet, um die Uhrzeit und das Kalenderdatum entweder in Software oder Hardware zu verfolgen. Viele der Funktionen einer RTC sind sehr speziell und erforderlich, um eine hohe Genauigkeit und einen sehr zuverlässigen Betrieb aufrechtzuerhalten. Es gibt RTC-Geräte außerhalb eines Mikrocontrollers, die eine Schnittstelle zu einem I 2 . haben C- oder SPI-Bus.

Dieser Artikel beschreibt RTCs in einem Mikrocontroller.

Übersicht über Echtzeituhren

Die Grundfunktion der Echtzeituhr besteht darin, Intervalle von einer Sekunde zu erzeugen und eine kontinuierliche Zählung aufrechtzuerhalten.

Eine Darstellung davon sehen Sie im Diagramm unten.

Abbildung 1. Dieses Zeitdiagramm zeigt die Grundfunktion einer RTC

Ebenfalls gezeigt ist eine Programmfunktion A, die einen Sekundenzähler liest und ein Ereignis B plant, das drei Sekunden in der Zukunft auftritt. Diese Aktion wird als Alarm bezeichnet. Beachten Sie, dass der Sekundenzähler kontinuierlich läuft und nicht stoppt und startet. Zwei Hauptanforderungen an eine RTC sind Genauigkeit und Dauerbetrieb.

Das nächste Diagramm zeigt allgemeine Hardwaremerkmale einer RTC.

Abbildung 2. Hardwarefunktionen der Echtzeituhr

Ein RTC hat oft einen eigenen internen Oszillator mit einem externen Quarz und der Option, eine externe Frequenzreferenz zu verwenden. Alle Taktquellen laufen mit 32.768 Hz. Eine externe Taktquelle ermöglicht die Verwendung eines sehr genauen und stabilen Geräts wie eines TCXO (temperaturkompensierter Quarzoszillator).

Eine Taktquelle wird mit einem Multiplexer ausgewählt und in einen Vorteiler eingegeben, der den Takt durch einen Faktor von 32.768 (215) teilt, um einen Ein-Sekunden-Takt zu erzeugen.

Eine einfache RTC hat einen Sekundenzähler, der normalerweise 32 Bit oder mehr beträgt. Einige RTCs verfügen über spezielle Zähler, um die Tageszeit und das Kalenderdatum zu verfolgen.

Eine einfache RTC ohne Zeit- und Datumszähler verwendet zu diesem Zweck eine Software. Eine übliche Option ist eine 1-Hz-Rechteckwelle von einem Ausgangspin. Eine RTC hat mehrere mögliche Ereignisse, um eine Prozessorunterbrechung zu erzeugen.

Ein RTC hat oft einen dedizierten Power-Pin, um den Betrieb zu ermöglichen, wenn der Rest des Mikrocontrollers ausgeschaltet ist. Dieser Strom-Pin ist normalerweise mit einer Batterie oder einem separaten Netzteil verbunden.

RTC-Genauigkeit und Frequenzkompensation

Die Genauigkeit einer RTC hängt von der 32.768 Hz Taktquelle ab. In einem gut konstruierten Quarzoszillator ist der Quarz die Hauptfehlerquelle. Für hochgenaues Timing kann ein externer TCXO verwendet werden, oder es werden spezielle Frequenzkompensationstechniken mit kostengünstigeren Quarzen und dem internen Oszillator verwendet. Es gibt drei Hauptfehlerquellen bei einem Quarz.

Die folgende Grafik zeigt verschiedene Konzepte im Zusammenhang mit der RTC-Genauigkeit.

Abbildung 3. Diagramm zur Fehlermessung anhand der verwendeten Temperatur mit freundlicher Genehmigung von Texas Instruments

Die dunkelblaue Kurve in diesem Diagramm zeigt eine typische Anfangstoleranz und die Änderung mit der Temperatur. Die rosa Kurve zeigt nur den Temperaturfehler. Der Schlüssel zur Temperaturkompensation ist die Tatsache, dass das Verhalten eines Kristalls gut bekannt ist und mit einer quadratischen Gleichung vorhergesagt wird. Wird der Anfangsfehler nach der Leiterplattenfertigung gemessen und ist die Temperatur bekannt, lassen sich die größten Fehlerquellen kompensieren.

Das gelbe Band ist nach sorgfältiger Kompensation ein angemessenes Ziel für die Genauigkeit. Denken Sie daran, dass 1 ppm über ein Jahr etwa 30 Sekunden entspricht. Kristallalterung ist schwer zu kompensieren. Glücklicherweise beträgt die Alterung normalerweise nur wenige ppm pro Jahr.

So ändern Sie das RTC-Timing

Hier sind zwei Möglichkeiten, das Timing einer RTC als Teil eines Systems zu ändern, um Fehler zu kompensieren.

Das erste Diagramm (Abbildung 4) zeigt die Anzahl der Oszillatorzyklen, die vom Vorteiler für jede Periode des Sekundenzählers gezählt werden.

Die ersten zwei Sekunden sind die üblichen 32.768 Zyklen. Die Software verwendet Temperaturmesswerte und den anfänglichen Fehler, um festzustellen, dass der Oszillator etwas schnell läuft und 32.768 Zyklen tatsächlich eine Zeitspanne von 0,99990 Sekunden sind. Um diesen kleinen Fehler zu kompensieren, weist die Software die RTC an, das Modul des Vorteilers auf 32.781 für jede vierte Sekunde zu ändern, um etwas Zeit hinzuzufügen.

Abbildung 4. Eine Darstellung der von einem Vorteiler gezählten Oszillatorzyklen

Diese Technik hat den Vorteil einer kleinen Änderung im Zeitraum von Sekunde zu Sekunde. Die Technik erfordert jedoch einen einstellbaren Vorteiler und zusätzliche Register, um den speziellen Vorskalierungszählwert und die Anzahl der Sekunden zwischen der Anwendung des speziellen Zählwerts zu halten. Ich finde das ziemlich cool. Ein bisschen kompliziert, aber ziemlich cool.

Was ist, wenn die RTC keinen speziellen Vorteiler hat, um das Timing anzupassen? Dieses Diagramm zeigt eine andere Methode.

Abbildung 5. Dieselbe Situation wie in Abbildung 4, jedoch ohne Vorteiler

In diesem Fall ist die Zahl in den Kästchen der Sekundenzähler. Der angezeigte Zählerstand ist 100251 gefolgt von 100252. Die Software hat kontinuierlich die Einstellung berechnet und den RTC-Sekundenzähler verfolgt. Wenn sich der Fehler auf genau eine Sekunde summiert, addiert oder subtrahiert die Software eine Sekunde, um den akkumulierten Fehler auszugleichen.

Ein Nachteil dieser Technik ist, dass die Änderung von Sekunde zu Sekunde groß ist, wenn eine Anpassung vorgenommen wird. Diese Technik hat den Vorteil der Kompatibilität mit jeder RTC.

Sicherheit in Echtzeituhren

Sicherheit ist eine interessante Anforderung. Es gibt Anwendungen, bei denen Zeit verwendet wird, um Kunden für die Nutzung eines Dienstes oder den Verbrauch einer Ressource in Rechnung zu stellen. Es gibt eine umfangreiche Praxis, um Hacks von RTCs zu verhindern oder zu erkennen. Die Techniken reichen von Intrusion Detection für Gehäuse bis hin zu speziellen Funktionen innerhalb des Mikrocontrollers.

Die RTC auf einem Mikrocontroller, den ich derzeit verwende, verfügt über spezielle Register, damit Software kritische Register dauerhaft sperren kann. Einmal gesperrt, können sie nicht mehr geändert werden und sind vor Hacking oder außer Kontrolle geratenem Code geschützt. Eine Änderung der Uhrzeit erfordert einen kompletten Reset des Mikrocontrollers.

Uhrzeit und Datum

Einige Echtzeituhren verfügen über Hardwarezähler, um die Tageszeit und das Kalenderdatum zu verwalten. Dies erfordert Zähler für Minuten, Stunden, Tage, Monate, Jahre und die Berücksichtigung von Schaltjahren. Uhrzeit und Kalenderdaten können auch von der Software beibehalten werden.

Ein prominentes Beispiel wären die Funktionen der C-Standardbibliothek, die in der Datei time.h zu sehen sind. Für einen Mikrocontroller kann dieses System auf dem Sekundenzähler einer RTC basieren. Es müssen vier kleine, benutzerdefinierte Funktionen geschrieben werden, um die time.h-Bibliothek vollständig zu unterstützen.

Die eine Funktion, die hier von Interesse ist, wird von der Funktion time( ) in der Bibliothek aufgerufen, die die Zeit als Anzahl der Sekunden seit einem Startpunkt namens „Epoche“ zurückgibt, normalerweise am 1. Januar 1970. Normalerweise ist die benutzerdefinierte Funktion zu lesen der Hardware-Timer heißt get_time( ) oder eine ähnliche Variante. Alles was get_time( ) tut, ist den Sekundenzähler zu lesen und den Wert zurückzugeben. Die Bibliothek erledigt den Rest, um diese Zeit in Sekunden auf die aktuelle Uhrzeit und das aktuelle Datum umzuwandeln.

Probleme mit 32-Bit-Sekundenzählern

Ein 32-Bit-Sekundenzähler läuft lange, aber nicht ewig. Aufgrund des begrenzten Zählbereichs kann es zu ernsthaften Problemen kommen. Beispielsweise könnte eine Systemzeit, die auf einem 32-Bit-Zähler unter Verwendung der C-Standardbibliothek und einer Epoche vom 1. Januar 1970 basiert, im Januar 2038 fehlschlagen, wenn der Zähler nach dem maximalen Zählerstand überläuft. Dieses Problem wird als Y2038-Problem bezeichnet.

Während der NASA-Weltraummission Deep Impact zur Untersuchung eines Kometen ist ein Fehler aufgetreten. Das primäre Missionsziel wurde erreicht und das Raumfahrzeug fuhr fort, andere Objekte zu untersuchen. 2013 ging die Kommunikation jedoch plötzlich verloren. Hier ist ein offizieller Kommentar der NASA.

„Obwohl die genaue Ursache des Verlustes nicht bekannt ist, hat die Analyse ein potenzielles Problem mit der Zeitkennzeichnung von Computern aufgedeckt, das zu einem Kontrollverlust über die Ausrichtung von Deep Impact geführt haben könnte.“

- NASA-Pressemitteilung im Jahr 2013

Eine wahrscheinliche Fehlerursache ist, dass ein 32-Bit-Timer die Zeit in Schritten von 0,1 Sekunden beibehielt und überrollte, was zur „Beendigung“ der Mission führte.

Wenn es um Uhrzeit und Datum geht, schlage ich vor, eine längere Lebensdauer als erwartet für Ihr Design zu verwenden.

Was kommt als nächstes

Der nächste Artikel schließt die Serie mit Watchdog-Timern ab.


Industrietechnik

  1. Es ist an der Zeit, Cloud-Management zu einer echten IT-Praxis zu machen
  2. Aufladen und Entladen des Kondensators
  3. Spannungs- und Stromberechnungen
  4. Die wahre Chance ist die industrielle Chance
  5. Arbeitsausrüstung:Ist es Zeit für ein Upgrade?
  6. 7 Treiber der digitalen Transformation
  7. Ist es Zeit für die Hochleistungsbearbeitung?
  8. Roboter erkennt und teilt Änderungen in 3D in Echtzeit
  9. Ein besserer Sensor erkennt Eisbildung in Echtzeit
  10. Unternehmensinteroperabilität in Echtzeit